0

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

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

但是,在调用递归之后,程序会跳过允许我输入的步骤。效果是字符串 user 为空。任何想法为什么?

谢谢。

4

2 回答 2

6

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

于 2011-04-14T09:36:53.397 回答
5

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

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

于 2011-04-14T09:32:22.707 回答