c ++ 11 getline要求输入两次

时间:2012-07-05 12:27:18

标签: c++ c++11 xcode4.3

在xcode 4.3中,我将项目设置为使用c ++ 11:我将语音c ++语言方言更改为c ++ 11,将c ++标准库更改为“libc ++(支持c ++ 11的LLVM c ++标准库) ”。
然后我尝试编译并执行这个简单的代码:

#include <iostream>

using namespace std;

int main (int argc, char** argv) 
{
    char buffer[100];
    cin.getline(buffer,100);
    cout << buffer << endl;
    return 0;
}

问题是它要求输入两次。例如我输入“hello”并且流保持打开状态,等待另一个字符串。如果我输入另一个字符串,则打印出“hello”。
如果我不使用c ++ 11,则不会出现此问题 有谁知道如何解决这个问题?我想在不使用std :: string的情况下输入最多100个字符。

1 个答案:

答案 0 :(得分:4)

这是libc ++中的一个错误。我很抱歉。它固定在Mountain Lion上。您可以使用getline(istream&, string&)来解决此问题:

#include <iostream>
#include <string>

using namespace std;

int main (int argc, char** argv) 
{
    std::string buffer;
    getline(cin, buffer);
    cout << buffer << endl;
    return 0;
}