首页 > 解决方案 > 我在使用 getline 时遇到问题

问题描述

我的代码无法读取整个字符串名称时遇到问题。

我试过使用getline(cin, movieName)as well as cin.ignore(),但我无法让它正常工作。

我正在上这门课的初学者课程,但我的教授不回复他们的电子邮件。

     #include <iostream>
     #include <iomanip>
     #include <string>

     using namespace std;

     int main()
     {

    string movieName;
    const float adultTicketPrice = 12;
    const float childTicketPrice = 6;
    const float percentTheaterKeeps = .20;
    int adultTicketsSold, childTicketsSold;
    float grossProfit, netProfit, amountPaidToDistributor;

    getline(cin, movieName);
    cout << fixed << showpoint << setprecision(2);


    cout << "What movie played tonight?\t    ";
    cin >> movieName;
    cout << "How many adult tickets were sold?   ";
    cin >> adultTicketsSold;
    cout << "How many child tickets were sold?   ";
    cin >> childTicketsSold;


    grossProfit = adultTicketPrice * adultTicketsSold + childTicketPrice * childTicketsSold;

    netProfit = grossProfit * percentTheaterKeeps;

    amountPaidToDistributor = grossProfit - netProfit;


    cout << setw(10) << left << "Movie Name";
    cout << setw(23) << right << movieName << endl;
    cout << setw(10) << left << "Adult Tickets Sold";
    cout << setw(16) << right << adultTicketsSold << endl;
    cout << setw(10) << left << "Child tickets sold";
    cout << setw(16) << right << childTicketsSold << endl;
    cout << setw(10) << left << "Gross Box Office Profit";
    cout << setw(11) << right << grossProfit << endl;
    cout << setw(10) << left << "Net Box Office Profit";
    cout << setw(13) << right << netProfit << endl;
    cout << setw(10) << left << "Amount Paid to distributor";
    cout << setw(8) << right << amountPaidToDistributor << endl << endl;

    

    return 0;
}

标签: c++

解决方案


std::getline(std::cin, movieName)当你想获得输入时,你需要使用movieName.

大概您在启动程序时会看到一个空白行,然后按enter. 这设置movieName'\n'。删除该行,然后std::cin >> movieName;用切换std::getline(std::cin, movieName)std::(如果您使用 using 声明,请删除s)


推荐阅读