gpt4 book ai didi

c++ - 检查字符串是否与可能的输入之一匹配的最有效方法是什么?

转载 作者:行者123 更新时间:2023-11-30 03:15:45 26 4
gpt4 key购买 nike

我被要求同时接受数字和单位,其中单位可以是 cm、m、in 或 ft。

为此我有一个循环

cout << "Please put in a number and its unit.\n";
while (cin >> val >> unit) {
if (val == '|') { break; }
cout << "Please put in a number and its unit.\n";
}

我的问题是,在代码效率和可读性方面,检查单位字符串的最佳方法是什么?放置一个大的 if 语句是否更有意义

    if (unit != "cm" && unit != "m" && unit != "in" && unit != "ft") {
cout << "Unit " << unit << " not accepted.\n";
}

或者最好有一个 vector ,我用所有单位初始化,然后检查它是否与任何单位匹配。

    if (find(units.begin(), units.end(), unit) == units.end()) {
cout << "Unit " << unit << " not accepted.\n";
}

... 其中 vector<string> units = {"cm", "m", "in", "ft"};

或者是否有其他方式在效率和可读性方面更好?

我希望这是问这个问题的正确地方。我考虑过代码审查,但它似乎不适合像这样的小问题......或者是吗?

最佳答案

您的“if”语句不仅效率更高,而且效率并不重要,因为无论您如何做,IO 都将花费大约十亿倍的时间。

它也是最易于维护的,因为如果您将“if”语句格式化为每个单元字符串一行,那么添加、删除或重命名一个单元只是 1 行编辑,您可以轻松地将它们注释掉或注释掉如果你改变主意。

如果您直到运行时才知道单位是什么,那么就应该使用 vector 。

关于c++ - 检查字符串是否与可能的输入之一匹配的最有效方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56793509/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com