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&, 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;
【讨论】:
以上是关于c ++ 11 getline询问两次输入的主要内容,如果未能解决你的问题,请参考以下文章
解决使用{freopen与 getline}读取不同文件时产生的的问题