gpt4 book ai didi

c++ - 关于无限循环(C++)

转载 作者:行者123 更新时间:2023-11-28 04:55:33 25 4
gpt4 key购买 nike

它是整个代码的一部分。当我尝试执行时,它正常运行,直到“输入月份并收到付款”。然而,在此消息之后,我将哈希索引和值放入“7 月 315 日 14 日”。突然,它打印出“Another query(Y/N)?”在无限循环中。我的错误点在哪里?

          unordered_map<string,float> monthly_payment;
char query;
string month;
cout << "Enter number of payments : ";
cin >> payNum;
cout <<"Enter month and payment received : " << endl;
for(int i=0; i<payNum; i++){
getline(cin, month,'\n');
cin >> payment;
monthly_payment.insert(pair<string, float>(month,payment));
}
cout << "Enter query month : ";
getline(cin, month, '\n');
cout << "The payment is " << monthly_payment[month]<<endl;
do{
cout << "Another query (Y/N)? ";
cin >> query;
if(query=='Y'){
cout << "Enter query month : ";
getline(cin, month, '\n');
cout << "The payment is " << monthly_payment[month]<<endl;
}
}while(query!='N');

最佳答案

当你有

int i;
string str;
cin >> i; // [1]
getline(cin, str); // [2]

它在 [1] 内停止并等待用户输入。然后用户输入 32什么也没发生。然后用户点击 <enter>并刷新输入缓冲区以处理 32\n .程序解析 32在第 [1] 行并转到第 [2] 行。这是\n仍有待解析 str变为空字符串,程序继续。

在 Linux 上,您可以用另一种方式使输入缓冲区闪烁。例如按 Ctrl+D。这样您的程序就可以使用了。

解决问题最好的方法就是拥有

string month;
double payment;
cin >> month >> payment;

或者您可以使用 geline 作为替代方案无处不在并用手解析字符串。

关于c++ - 关于无限循环(C++),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47211579/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com