C++ multiple strings inside an if statement

前端 未结 5 828
北恋
北恋 2020-12-02 02:26

I\'m having an issue trying to check against multiple possibilities in an if statement.

The user inputs a string, and then I check that string against multiple possi

5条回答
  •  孤街浪徒
    2020-12-02 02:44

    I suppose that the type of the variable theString is std::string. Otherwise at least this comparison

    theString == "Seven"
    

    does not make sense,

    The condition in the if statement

    if (theString == "Seven" || "seven" || "7")
    

    is equivalent to

    if ( ( theString == "Seven" ) || ( "seven" ) || ( "7" ) )
    

    and always yields true because at least the address of the string literal "seven" is not equal to zero. So this subexpression ( "seven" ) provides that the whole expression will be equal to true.

    You should write

    if (theString == "Seven" || theString == "seven" || theString == "7")
    

    But it would be better at first to convert the string to upper or lower case.

    For example

    #include 
    #include 
    #include 
    
    //...
    
    std::transform(theString.begin(), theString.end(), theString.begin(),
        [](char c) { return std::toupper((unsigned char)c);  });
    
    if (theString == "SEVEN" || theString == "7")
    {
        theInt = 7;
        cout << "You chose: " << theInt << endl;
    }
    else if ( theString == "SIX" || theString == "6" )
    {
        theInt = 6;
        cout << "You chose: " << theInt << endl;
    }
    

提交回复
热议问题