我是一个初学者,试图在C++中学习一些简单的概念,我遇到了字符串操作atm的问题:
do {
cout << "Please, enter your full name: ";
getline (cin,name);
} while (name.empty() == true && name[0] != ' ');
Run Code Online (Sandbox Code Playgroud)
据我了解,0是数组中的第一个出现?然而,当运行代码并输入''时,我得到"超出范围错误".
由于您的代码使用&&,它不会检查条件的第二部分,除非第一部分是true,即只检查空字符串的初始字符是空格,这是一个未定义的行为.你需要的是一个||,像这样:
do {
cout << "Please, enter your full name: ";
getline (cin,name);
} while (name.empty() || name[0] == ' ');
Run Code Online (Sandbox Code Playgroud)
请注意,不需要将bool函数的返回值进行比较true,因为仅当表达式已经存在时,比较才会成功true.