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

C++ 代码跳过getline语句。我尝试了getline和cin,但都没有成功,c++,C++,我读了一些关于如何修复它的答案,但我也试图理解它背后的概念(即为什么第一个getline可以正常工作) #包括 #包括 #包括 使用名称空间std; int main(){ string-ticker=“”; 字符串日期=”; 国际许可证; 智力精神; 库特 输入售价=> 12.34 XYZ */ 您可能没有在正确的位置使用cin.ignore()。它应该在std::cin之后和getline()之前使用 例如: int x; string y; cin >> x; cin.igno

我读了一些关于如何修复它的答案,但我也试图理解它背后的概念(即为什么第一个getline可以正常工作)

#包括
#包括
#包括
使用名称空间std;
int main(){
string-ticker=“”;
字符串日期=”;
国际许可证;
智力精神;
库特
输入售价=>
12.34
XYZ
*/

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

例如:

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

想法是删除cin在流中留下的回车、换行符等,这些都会导致getline()立即返回。

可能是重复的,我在发布之前确实尝试过,因为cin.ignore();不起作用。它只会导致程序终止。您在pprice(和sprice)时输入了浮点(12.34)应该是整数。所以pprice将是12和日期。34。
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
*/
int x;
string y;
cin >> x;
cin.ignore(INT_MAX);
getline(cin, y);