如果语句错误地读取字符串,在第一个条件下总是 returns

If statement incorrectly reads string, always returns on first condition

我正在编写一个接受字符串变量的错误检查函数,我需要它是 "Y"、"N"、"y" 或 [=17] 之一=].我的问题是字符串变量总是设置为 "y",表明 if 语句没有通过第一个条件,无论变量接收什么输入。如果有明显的错误比如我在使用'||'接线员,如果有人能告诉我,那将对我有很大帮助。

if (string == "y" || "Y") { //If 'yes'...
    string = "y"; //Standardise input for later use
    return 1; //Error check successfully passed
}
else if (string  == "n" || "N") { //If 'no'...
    string = "n"; //Standardise input for later use
    return 1; //Error check successfully passed
}
else { //If erroeneous input...
    return 0; //Error check not passed
} 

string == "y" || "Y" 并不像您认为的那样:它将 string"y" 进行比较,然后将结果与 "Y" 进行或运算。因为 "Y"' is non-zero, it always evaluates totrue`。

正确的代码是:

string == "y" || string == "Y"

也可以将"string"转为char"c",并使用tolower(c)函数,可以比较"y"和"n" 在相同的条件下,因为您的 return 值在两种情况下都相同。

还有boost::to_lower(data)选项;