如果语句错误地读取字符串,在第一个条件下总是 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 to
true`。
正确的代码是:
string == "y" || string == "Y"
也可以将"string"转为char"c",并使用tolower(c)函数,可以比较"y"和"n" 在相同的条件下,因为您的 return 值在两种情况下都相同。
还有boost::to_lower(data)选项;
我正在编写一个接受字符串变量的错误检查函数,我需要它是 "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 to
true`。
正确的代码是:
string == "y" || string == "Y"
也可以将"string"转为char"c",并使用tolower(c)函数,可以比较"y"和"n" 在相同的条件下,因为您的 return 值在两种情况下都相同。
还有boost::to_lower(data)选项;