getline(cin,var)不工作!

时间:2011-04-14 09:30:33

标签: c++ string recursion getline

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

cout << "Enter a phrase: ";
string user;
getline(cin, user);

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

感谢。

2 个答案:

答案 0 :(得分:6)

对C ++的递归调用在C ++中没有明确定义(它在C中)。这可能是您的问题的原因,也可能不是。

答案 1 :(得分:4)

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

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

相关问题