代码跳过getline语句。我尝试了getline和cin都没有成功

时间:2016-04-24 06:50:24

标签: c++

我读了一些关于如何解决这个问题的答案,但我也试图理解它背后的概念(即为什么第一个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
*/

1 个答案:

答案 0 :(得分:0)

您可能未在正确的位置使用cin.ignore()。它应该在std::cin之后和getline()之前使用。

例如:

int x;
string y;
cin >> x;
cin.ignore(INT_MAX);
getline(cin, y);

这个想法是删除cin在流上留下的回车符,换行符等,这会导致getline()立即获取和返回。