我读了一些关于如何解决这个问题的答案,但我也试图理解它背后的概念(即为什么第一个getline工作正常)。
#include <iostream>
#include <cmath>
#include <string>
using namespace std;
int main(){
string ticker = "";
string date = "";
int pprice;
int sprice;
cout << "Enter the stock ticker =>" << endl;
getline(cin, ticker);
cout << "Enter the purchase price =>" << endl;
cin >> pprice;
IT工作很精细,直到它来到这里:
cout << "Enter the sell date =>" << endl;
getline(cin, date);
cout << "Enter the sell price =>" << endl;
cin >> sprice;
cout << ticker << endl;
return 0;
}
/*OUTPUT:
Enter the stock ticker =>
XYZ
Enter the purchase price =>
12.34
Enter the sell date =>
Enter the sell price =>
12.34
XYZ
*/
答案 0 :(得分:0)
您可能未在正确的位置使用cin.ignore()
。它应该在std::cin
之后和getline()
之前使用。
例如:
int x;
string y;
cin >> x;
cin.ignore(INT_MAX);
getline(cin, y);
这个想法是删除cin在流上留下的回车符,换行符等,这会导致getline()立即获取和返回。