1

入力が異なる方法で与えられたときに、同じプログラムが異なる出力を与えるのはなぜですか?

プログラム 1:

int main(){
    char s[10];
    cout << "Enter a String\n";
    cin >> s;
    cout << "The entered String is\n";
    cout << s << "\n";
    return 0;
}  

コマンドライン「Hello World」から入力すると、 「Hello」しか出力されません

プログラム 2:

int main(){
    char s[] = "Hello World";
    cout << "The entered String is\n";
    cout << s << "\n";
    return 0;
}  

この場合、「Hello World」の出力を取得しています。

両方のプログラムの違いは何ですか? ロジックは同じですか?コマンドラインから入力したときに、文字列全体「Hello World」を取得するにはどうすればよいですか? 方法はありますか?

4

2 に答える 2

4

使用getline():

string s;
getline(cin, s);
cout << "The entered String is\n";
cout << s << "\n";

コードの問題は、入力ストリーム抽出演算子>>が次の空白までの文字のみを取得することです (つまり、1 つの「単語」のみ)。関数はgetline()行全体を取得します。

于 2012-11-19T21:30:24.263 に答える
0

最初のコード スニペットでは、配列の長さはわずか 10 文字です。hello world を入力すると、配列がオーバーフローし、予期しないことが起こります。

于 2012-11-19T21:31:13.503 に答える