3

このコードを実行すると、キーを2回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;
}

どうすれば修正できますか?

OSXLionでXcodeバージョン4.5.2を使用しています。returnターミナルでプログラムを実行してみましたが、2回押す必要があります。

これはこの質問に似ていますが、コードが少ないため、解決策がより明確になるはずです。つまり、他の質問では、問題は問題だと言われていましたがcin.ignore()、私のコードにはそれがありません。


私が試した他の失敗したコード:

これにより、まったく同じ動作が生成されます。

    cin.getline(buf, 128);

returnこれは次の行に移動することはありません(キーが何回押されても):

    cin.getline(buf, 128, '\r');
4

1 に答える 1

0

問題を見つけました。コンパイラに問題があるようです。

Xcodeでプロジェクトに移動し、コンパイラをデフォルトコンパイラ(Apple LLVMコンパイラ4.1)からLLVM GCC 4.2に切り替えると、すべてが正しく機能します。

于 2012-12-04T06:16:00.087 に答える