由于某些奇怪的原因,getline()函数无法正常工作。我通过递归我的程序循环(返回main();)。第一次运行以下代码,没关系。
cout << "Enter a phrase: ";
string user;
getline(cin, user);
但是,在调用递归后,程序会跳过允许我键入的步骤。结果是字符串用户为空。有什么想法吗?
感谢。
答案 0 :(得分:6)
对C ++的递归调用在C ++中没有明确定义(它在C中)。这可能是您的问题的原因,也可能不是。
答案 1 :(得分:4)
在循环之前调用cin.clear()
清除所有标志。
编辑:感谢@Xeo指出,还应该调用cin.ignore()
来丢弃新行字符 - 它仍然可以在缓冲区中...