getline(cin,var)不工作!

pau*_*ago 0 c++ string recursion getline

由于某些奇怪的原因,getline()函数无法正常工作.我通过递归我的程序循环(返回main();).第一次运行以下代码,没关系.

cout << "Enter a phrase: ";
string user;
getline(cin, user);
Run Code Online (Sandbox Code Playgroud)

但是,在调用递归之后,程序会跳过允许我键入的步骤.结果是字符串用户为空.有什么想法吗?

谢谢.

APr*_*mer 6

在C++中没有很好地定义对main的递归调用(它在C中).这可能是您的问题的原因或不是.


Nim*_*Nim 5

cin.clear()在循环之前调用清除任何标志。

编辑:感谢@Xeo 指出,还应该调用cin.ignore()丢弃换行符 - 它可能仍然在缓冲区中......