为什么我必须在C ++中按两次输入获取行?

时间:2012-12-04 05:56:51

标签: c++ cin

为什么在运行此代码时,只有在按下输入键两次后才会执行cout语句?

#include <iostream>
using namespace std;
int main(int argc, const char * argv[]) {
    char buf[128];
    cin.getline(buf, 128, '\n');
    cout << buf;
    return 0;
}

我该如何解决?

我在OS X Lion上使用Xcode版本4.5.2。我尝试在终端中运行程序,它也需要两个 return 按下。

这类似于this question,但代码较少,因此解决方案应该更清晰。即在另一个问题中,人们说问题是cin.ignore(),但是,我的代码没有。{/ p>


我试过的其他代码失败了:

这会产生相同的确切行为:

    cin.getline(buf, 128);

这永远不会移动到下一行(无论按下 return 键多少次):

    cin.getline(buf, 128, '\r');

1 个答案:

答案 0 :(得分:0)

我发现了问题。这似乎是编译器的一个问题。

当我在Xcode中转到我的项目并将编译器从默认编译器(Apple LLVM编译器4.1)切换到 LLVM GCC 4.2 时,一切正常。