首页 > 解决方案 > 如何在此程序中使用 cin.getline() 以便它可以读取空格?

问题描述

我将如何在此代码中使用 cin.getline() 让程序在键入项目名称时将空格作为输入?

这就是我希望我的代码能够做到的:使用动态数组,编写一个程序,允许用户输入购买的杂货数量和每件商品的价格。然后程序输出杂货的总成本,包括 8% 的税。

#include <iostream>
#include <string>

using namespace std;

struct lineItem {
    string groceries;
    int quantity;
    double pricePerEach;
};

double sumPrice(lineItem *list, int size);

void printGroceries(lineItem *list, int size);


int main () {
    double salesTax;
    double subTotal, totalPrice;
    int i, numOfItems;

    cout << "Enter number of grocery items: ";
    cin >> numOfItems;
    cout << endl;

    lineItem *receipt;      //or auto *receipt = new lineItem[numOfItems];
    receipt = new lineItem[numOfItems];

    cout << "Enter the name, quantity, and price of item: " << endl;

    for (i = 0; i < numOfItems; i++)
        cin >> receipt[i].groceries >> receipt[i].quantity >> receipt[i].pricePerEach;

    subTotal = sumPrice(receipt, numOfItems);

    cout << "Sub Total: $" << subTotal << endl;

    salesTax = .08 * subTotal;
    totalPrice = subTotal + salesTax;

    cout << "Sales Tax at 8% : $" << salesTax << endl;
    cout << "Total Price: $" << totalPrice << endl;

    printGroceries(receipt, numOfItems);
    sumPrice(receipt, numOfItems);

    delete [] receipt;

    return 0;
}

double sumPrice(lineItem *list, int size) {
    double sum = 0;

    for (int i = 0; i < size; i++) {
        sum = sum + (list[i].quantity * list[i].pricePerEach);
    }
    return sum;
}

void printGroceries(lineItem *list, int size) {

    for (int i = 0; i < size; i++) {
        cout << (i + 1) << ":" << list[i].groceries << endl;
    }
}

我试图这样做,但没有奏效。理想情况下,我希望提示输入如下所示。我只是无法正确格式化它。任何帮助将不胜感激!

for (i = 0; i < numOfItems; i++) {
        cout << "Item name: ";
        cin.getline(receipt[i].groceries,numOfItems);

        cout << "\tQuantity: ";
        cin.getline(receipt[i].quantity,numOfItems);

        cout << "\tPrice: $";
        cin.getline(receipt[i].pricePerEach,numOfItems);
    }

标签: c++

解决方案


推荐阅读