它是整个代码的一部分。当我尝试执行时,它会正常运行,直到“输入月份和付款”。但是在这条消息之后,我把Hash索引和值设置为“July 315.14”。突然,它打印出“另一个查询(是/否)?”在无限循环中。我的错误点在哪里?
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');
答案 0 :(得分:1)
当你有
时ajaxPromises(['http://yoururl.com','http://yoururl.com'])
.then(function (result) {
// do something with result
})
.catch(function (error) {
// do something with error
})
在[1]内停止并等待用户输入。
然后用户键入int i;
string str;
cin >> i; // [1]
getline(cin, str); // [2]
,没有任何反应。然后用户点击32
并输入缓冲区刷新以处理<enter>
。
程序在第[1]行解析32\n
并转到第[2]行。它仍然是32
解析,因此\n
变为空字符串,程序向前移动。
在linux上你可以用另一种方式使输入缓冲区闪存。以Ctrl + D为例。所以程序变得可用了。
解决问题的最佳方法是
str
或者作为替代方案,您可以在任何地方使用string month;
double payment;
cin >> month >> payment;
并用手解析字符串。