1

我是一个初学者,试图在 C++ 中学习一些简单的概念,我遇到了字符串操作 atm 的问题:

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

据我了解,0 是数组中的第一次出现?然而,在运行代码并输入“”时,我收到“超出范围错误”。

4

1 回答 1

7

由于您的代码使用&&,它不会检查条件的第二部分,除非第一个是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 回答