由于某种奇怪的原因,getline()函数不能正常工作。我有我的程序循环通过递归(return main();)。第一次运行以下代码时,一切正常。
cout << "Enter a phrase: ";
string user;
getline(cin, user);
但是,在调用递归之后,程序会跳过允许我输入的步骤。结果是字符串user为空。你知道为什么吗?
谢谢。
发布于 2011-04-14 09:32:23
在循环之前,调用cin.clear()
清除所有标志。
编辑:感谢@Xeo指出,还应该调用cin.ignore()
来丢弃新行字符-它可能仍然在缓冲区中……
发布于 2011-04-14 09:36:53
对main的递归调用在C++中没有很好地定义(它是在C中)。这可能是问题的原因,也可能不是。
https://stackoverflow.com/questions/5661122
复制