C++ 为什么我必须在C+;中按两次enter键+;去接电话?

C++ 为什么我必须在C+;中按两次enter键+;去接电话?,c++,cin,C++,Cin,为什么当我运行这段代码时,cout语句只有在我按两次enter键后才会执行 #include <iostream> using namespace std; int main(int argc, const char * argv[]) { char buf[128]; cin.getline(buf, 128, '\n'); cout << buf; return 0; } 这永远不会移动到下一行(无论按了多少次回车键): 我发现了问题

为什么当我运行这段代码时,
cout
语句只有在我按两次enter键后才会执行

#include <iostream>
using namespace std;
int main(int argc, const char * argv[]) {
    char buf[128];
    cin.getline(buf, 128, '\n');
    cout << buf;
    return 0;
}
这永远不会移动到下一行(无论按了多少次回车键):


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


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

main
中的所有内容都正常吗?不确定,但我认为既然您已将分隔符指定为\n,\n必须键入两次。首先添加一行,然后将该行赋给cin.getline。尝试删除规范,即
cin.getline(buf,128)
对我来说,只要按一次enter键,它就会被执行。我使用OSX已经有一段时间了,但是它们的回车不是\r而不是\n吗?@txtechhelp:替换为\r会导致输入永远不会停止。我可以按enter键100次,但它不会移动到下一行。可能第一个编译器的getline函数在读取后会将
\n
字符返回到stdin。
    cin.getline(buf, 128);
    cin.getline(buf, 128, '\r');