C++ 为什么我的;“智力”;变量加5? if(checkForRoll==“Intelligent”&&checkForRoll==“Intelligent”){//检查Intelligent 智力=智力+5; }否则如果(checkForRoll==“强度”&&checkForRoll==“强度”){ 强度=强度+5; } cout

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

你要求你的弦同时具有智力和智力,这是不可能的。将“and”(
&&&
)更改为“or”(
|
)。

您的变量checkForRoll不能是“strength”和“strength”,但可以是“strength”| |“strength”。

我认为您应该将其替换为&&||


另外,你也可以写Intelligent+=5

CheckForRoll不能同时是“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")
{
....
}