c++ - 我在使用 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;
}
解决方案
std::getline(std::cin, movieName)
当你想获得输入时,你需要使用movieName
.
大概您在启动程序时会看到一个空白行,然后按enter
. 这设置movieName
为'\n'
。删除该行,然后std::cin >> movieName;
用切换std::getline(std::cin, movieName)
。std::
(如果您使用 using 声明,请删除s)
推荐阅读
- javascript - 如何在 Sanity CMS 中创建自定义端点?
- mysql - 每个国家人口第二多的城市。(MySQL - 作业问题)
- bash - 在 Ubuntu 上解析病毒扫描结果
- encryption - 如何在wiremock独立服务器中启用ws策略读取和匹配Web服务请求?
- php - 如何让我的网站的访问者在不添加页面扩展名的情况下访问我的网页
- css - CSS 多列布局 - Chrome 不允许右列比左列长?
- wordpress - WooCommerce 中用于追加销售产品的光滑滑块
- node.js - 需要帮助部署使用 MongoDB Atlas 和 Express 创建的 RESTful API
- android - Android - 使用 Ejabberd 和 Smack 时出现文件传输错误
- c++ - 在 std::erase() 产生未定义的行为之前调用 std::fill() 吗?