c ++ 11 getline询问两次输入

Posted

技术标签:

【中文标题】c ++ 11 getline询问两次输入【英文标题】:c++11 getline asking two times the input 【发布时间】:2012-07-05 12:27:18 【问题描述】:

在 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】:

这是 libc++ 中的一个错误。我很抱歉。它固定在山狮身上。您可以改用getline(istream&amp;, string&amp;) 来解决它:

#include <iostream>
#include <string>

using namespace std;

int main (int argc, char** argv) 

    std::string buffer;
    getline(cin, buffer);
    cout << buffer << endl;
    return 0;

【讨论】:

以上是关于c ++ 11 getline询问两次输入的主要内容,如果未能解决你的问题,请参考以下文章

解决使用{freopen与 getline}读取不同文件时产生的的问题

C++ getline() 不结束输入

当我尝试在 getline 中提供用户输入时,光标仍保留在最后

C ++中的getline输入错误[重复]

C ++试图通过getline函数为函数调用获取用户输入值

c ++ getline()在多次调用时不等待来自控制台的输入