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

C++ 编译器跳过cin后的getline(c+;+;),c++,C++,我尝试在cin之后使用getline,但编译器忽略它,直接转到下一个输入 int id , age ; String name; cin >> id; getline (cin , name ) ; cin >> age ; 程序中的问题是,当您输入id并在运行时按enter键时,该空间将被视为输入,并一直保留在输入缓冲区中,直到您使用它为止。因此,您需要占用该空间。因此,很容易认为C++编译器跳过调用 GETLIN(CIN,Name)< /C>函数,但实际上不是。<

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

int id , age ;
String name;

cin >> id;
getline (cin , name ) ;
cin >> age ;

程序中的问题是,当您输入id并在运行时按enter键时,该空间将被视为输入,并一直保留在输入缓冲区中,直到您使用它为止。因此,您需要占用该空间。因此,很容易认为C++编译器跳过调用<代码> GETLIN(CIN,Name)< /C>函数,但实际上不是。

< p>可以在GETLIN之前使用CIN。当getline在流中看到时结束。。在cin指令中,用户必须按enter键结束输入。。因此getline在缓冲区中找到它,编译器将跳过它。。所以您必须从流中忽略它

cin >> id;
cin.ignore(100,'\n');
getline(cin,name);

关于这一点,应该有很多重复项,但缺少的是您在输入
id
后按下的
Enter
键。想想那把钥匙会发生什么,我们看到开罗大学有很多问题。是否已指示您以这种方式使用堆栈溢出?请拿着这本书看一看。另请参见:。请与你的同学分享链接。更好:请看。。。