如何将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
相关产品推荐
相关产品推荐

