cin之后的编译器跳过getline(c ++)

时间:2018-03-28 15:47:02

标签: c++

我尝试在cin之后使用getline,但编译器忽略它并直接转到下一个输入

mounted

2 个答案:

答案 0 :(得分:0)

程序中的问题是当您输入id并在运行时按Enter键时,空间被视为输入并保留在输入缓冲区中,直到您使用它为止。所以,你需要消耗这个空间。因此很容易认为C ++编译器会跳过对getline(cin,name)函数的调用,但实际上并非如此。

答案 1 :(得分:0)

你可以在getline之前使用cin.ignore()当getline在流中看到\ n时结束...在cin指令中用户必须按Enter才能结束输入..所以getline在缓冲区中找到它并且编译器将跳过它..所以你必须从流

中忽略它
cin >> id;
cin.ignore(100,'\n');
getline(cin,name);