0

xcode 4.3では、c++11を使用するようにプロジェクトを設定しました。音声c++言語ダイアレクトをc++11に変更し、c++標準ライブラリを「libc++(c++11をサポートするLLVMc++標準ライブラリ)」に変更しました。
次に、この単純なコードをコンパイルして実行しようとしました。

#include <iostream>

using namespace std;

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

問題は、入力を2回要求することです。たとえば、「hello」と入力すると、ストリームは開いたままになり、別の文字列を待機します。別の文字列を入力すると、「hello」が出力されます。
c ++ 11を使用しない場合、この問題は発生しません。
誰かがこの問題を解決する方法を知っていますか?std::stringを使用せずに最大100文字の入力を取り入れたい。

4

1 に答える 1

4

これは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;
}
于 2012-07-05T13:57:53.320 に答える