You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将Python中的if成员判断语句转换为C++实现?

在C++中实现Python风格的成员判断逻辑

你需要把Python里if func in ("add", "sub", "div", "mult")的判断逻辑转换成C++代码,以下是几种可行的实现方式:

方法1:链式条件判断(最直接)

如果选项数量不多,直接用逻辑或拼接字符串比较是最简单的方案:

#include <iostream>
#include <string>

int main() {
    std::string func;
    std::cout << "which function: add, sub, div, mult" << std::endl;
    std::cin >> func;

    if (func == "add" || func == "sub" || func == "div" || func == "mult") {
        // 此处编写后续分支逻辑
    } else {
        std::cout << "error" << std::endl;
    }
    return 0;
}

方法2:用std::set做存在性检查

如果后续可能扩展更多选项,用std::set存储合法值会更便于维护:

#include <iostream>
#include <string>
#include <set>

int main() {
    std::string func;
    std::cout << "which function: add, sub, div, mult" << std::endl;
    std::cin >> func;

    const std::set<std::string> valid_funcs = {"add", "sub", "div", "mult"};
    if (valid_funcs.count(func)) { // count返回1表示存在,0表示不存在
        // 此处编写后续分支逻辑
    } else {
        std::cout << "error" << std::endl;
    }
    return 0;
}

方法3:C++20及以上版本用std::contains(最贴近Python写法)

C++20引入的<ranges>库支持直接检查元素是否在初始化列表中,写法最接近Python:

#include <iostream>
#include <string>
#include <ranges>

int main() {
    std::string func;
    std::cout << "which function: add, sub, div, mult" << std::endl;
    std::cin >> func;

    if (std::ranges::contains({"add", "sub", "div", "mult"}, func)) {
        // 此处编写后续分支逻辑
    } else {
        std::cout << "error" << std::endl;
    }
    return 0;
}

注意:该特性需要编译器支持C++20标准(如GCC 10+、Clang 12+、MSVC 2019+)。

方法4:数组加循环判断

如果不想依赖STL容器,也可以手动遍历数组检查:

#include <iostream>
#include <string>
#include <algorithm>

int main() {
    std::string func;
    std::cout << "which function: add, sub, div, mult" << std::endl;
    std::cin >> func;

    const std::string valid_funcs[] = {"add", "sub", "div", "mult"};
    const int arr_size = sizeof(valid_funcs) / sizeof(valid_funcs[0]);
    auto it = std::find(valid_funcs, valid_funcs + arr_size, func);
    
    if (it != valid_funcs + arr_size) {
        // 此处编写后续分支逻辑
    } else {
        std::cout << "error" << std::endl;
    }
    return 0;
}

内容的提问来源于stack exchange,提问作者Adam23262

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.10 09:46:02