首页 > 解决方案 > 关于使用 || 的 if/else 代码的问题 和 &&

问题描述

#include <iostream>
#include <string>
using namespace std;

int main()
{
    string vegetarian, vegan, gluten_free;
    cout << "Welcome to Restaurant Selector!" << endl;
    cout << "Are you a vegetarian?"<<endl;
    cin >> vegetarian;
    cout << "Are you a vegan?"<<endl;
    cin >> vegan;
    cout << "Are you gluten-free?"<<endl;
    cin >> gluten_free;

    if (gluten_free == "yes" && vegan == "yes" && vegetarian == "yes" )
    {
            cout<<"The Chef's Kitchen"<<endl;
    }
    else if (gluten_free == "yes" && vegan == "yes" )
    {
            cout<<"Vegan's lair"<<endl;
    }
    else if (gluten_free == "yes")
    {
            cout<<"Starbuck's"<<endl;
    }
    else if ( gluten_free == "no" || "No" && vegan == "no" || "No" && vegetarian == "no"||"No")
        cout<<"Burger King"<<endl;


    return 0;
}

如何获得第一个 if 表达式以使用 yes 的多种变体。我希望它包括:是的,是的,是的。但是我只能在两个字符串上使用 or 运算符。我也想为后续行执行此操作。我应该怎么办?

标签: c++if-statement

解决方案


如何获得第一个 if 表达式以使用 yes 的多种变体。我希望它包括:是的,是的,是的。

在比较之前将输入字符串转换为小写。

一个简单的例子:

auto tolower = [](unsigned char c){
    return std::tolower(c);
};
std::transform(
    vegan.begin(),
    vegan.end(),
    vegan.begin(),
    tolower
);

请注意,像这样的简单字符串处理仅适用于固定宽度编码,而不适用于 unicode。


推荐阅读