私は C++ でいくつかの簡単な概念を学ぼうとしている初心者ですが、文字列操作 atm に問題があります。
do {
cout << "Please, enter your full name: ";
getline (cin,name);
} while (name.empty() == true && name[0] != ' ');
私が理解しているように、配列の最初の出現は0ですか? それでも、コードを実行して「 」を入力すると、「範囲外エラー」が発生します。
あなたのコードは を使用しているので&&
、最初の部分が でない限り、条件の 2 番目の部分をチェックしませんtrue
。つまり、最初の文字がスペースであるために空の文字列のみがチェックされますが、これは未定義の動作です。必要なのは、||
次のような です。
do {
cout << "Please, enter your full name: ";
getline (cin,name);
} while (name.empty() || name[0] == ' ');
bool
関数の戻り値を と比較する必要がないことに注意してください。これtrue
は、式が既に である場合にのみ比較が成功するためtrue
です。