C++ 为什么我的;“智力”;变量加5? if(checkForRoll==“Intelligent”&&checkForRoll==“Intelligent”){//检查Intelligent 智力=智力+5; }否则如果(checkForRoll==“强度”&&checkForRoll==“强度”){ 强度=强度+5; } cout
你要求你的弦同时具有智力和智力,这是不可能的。将“and”(C++ 为什么我的;“智力”;变量加5? if(checkForRoll==“Intelligent”&&checkForRoll==“Intelligent”){//检查Intelligent 智力=智力+5; }否则如果(checkForRoll==“强度”&&checkForRoll==“强度”){ 强度=强度+5; } cout,c++,C++,你要求你的弦同时具有智力和智力,这是不可能的。将“and”(&&&)更改为“or”(|)。您的变量checkForRoll不能是“strength”和“strength”,但可以是“strength”| |“strength”。我认为您应该将其替换为&&|| 另外,你也可以写Intelligent+=5CheckForRoll不能同时是“Intelligent”和“Intelligent” 假设您使用的是std::string转换为uppercase,并进行一次比较 if (checkForRo
&&&
)更改为“or”(|
)。您的变量checkForRoll不能是“strength”和“strength”,但可以是“strength”| |“strength”。我认为您应该将其替换为&&||
另外,你也可以写Intelligent+=5CheckForRoll不能同时是“Intelligent”和“Intelligent” 假设您使用的是
std::string
转换为uppercase,并进行一次比较
if (checkForRoll == "intellect" && checkForRoll == "Intellect") {//checks for intellect
intellect = intellect + 5;
} else if (checkForRoll == "strength" && checkForRoll == "Strength") {
strength = strength + 5;
}
cout << intellect;
这只适用于
checkForRoll
是字符串的情况
如果它是一个字符*
,那么您就不能测试它是否与=
相等。您需要使用strcmp()
进行比较。为了让您的生活更轻松,我建议您在比较之前使用std::touper
或std::tolower
转换字符串。另请参见std::transform
通过只使用一个比较,这简化了您的生活
“试试看,你会喜欢的!”比AndreyT更详细:checkForRoll的类型是什么。或者,请参阅Herb Sutter关于实现基本字符串专门化的演示,该专门化以不区分大小写的方式运行:
std:string checkForRoll = "inTeLleCt";
std::transform(checkForRoll.begin() , checkForRoll.end() , checkForRoll.begin(), ::toupper);
if (checkForRoll == "INTELLECT")
{
....
}