1

私は C++ でいくつかの簡単な概念を学ぼうとしている初心者ですが、文字列操作 atm に問題があります。

do {
    cout << "Please, enter your full name: ";
    getline (cin,name);
} while (name.empty() == true && name[0] != ' ');

私が理解しているように、配列の最初の出現は0ですか? それでも、コードを実行して「 」を入力すると、「範囲外エラー」が発生します。

4

1 に答える 1

7

あなたのコードは を使用しているので&&、最初の部分が でない限り、条件の 2 番目の部分をチェックしませんtrue。つまり、最初の文字がスペースであるために空の文字列のみがチェックされますが、これは未定義の動作です。必要なのは、||次のような です。

do {
    cout << "Please, enter your full name: ";
    getline (cin,name);
} while (name.empty() || name[0] == ' ');

bool関数の戻り値を と比較する必要がないことに注意してください。これtrueは、式が既に である場合にのみ比較が成功するためtrueです。

于 2013-06-03T17:14:06.127 に答える