c++字符串,测试[0]是否为空格,问题

C++ string, test if [0] is space, issues

本文关键字:是否 空格 问题 字符串 测试 c++      更新时间:2023-10-16

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

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

据我所知,0是数组中的第一个出现?然而,当运行代码并输入' '时,我得到一个"超出范围错误"。

因为你的代码使用&&,它不会检查条件的第二部分,除非第一个是true,即只有空字符串会检查初始字符是空格,这是一个未定义的行为。你需要的是一个||,像这样:

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

注意,没有必要将bool函数的返回值与true进行比较,因为只有当表达式已经是true时,比较才会成功。