c++ - 如何将大量选项组织到一个变量中,然后调用该变量

标签 c++

我正在制作一个简单的程序,如果您输入“north”,它会从您的耐力中减去一个数字。我也明白了,但是有很多可能的输入来表示“北”,你可以有“不”、“n”、“北”、“NoRtH”,因为你可以看到这在一段时间后变得乏味,如果我必须为单词 north 的每个可能变体创建一个 if 语句,更不用说我想使用的其他方向,它看起来不太好

我想知道是否有一种方法能够将该词的所有这些可能的变体存储到某个东西中,当我进行 if 语句时,它会将其定向到该存储单元以与所有可能的变体进行比较......因为我只知道如果我制作 40 多个 if 和 else if 语句来比较用户输入和所有这些变化,代码会变得丑陋和快速。

最佳答案

听起来您想查看某个字符串是否包含在任意一组字符串中。 C++ 标准库具有这方面的功能。

我会使用 std::set包含有效术语列表,如下所示:

std::set<std::string> north_terms_set;
north_terms_set.insert("n");
north_terms_set.insert("north");

然后检查给定输入是否属于该集合,如下所示:

//Convert input to lowercase
std::string input_str = "NoRtH"; 
std::transform(input_str.begin(), input_str.end(), input_str.begin(), ::tolower);

//compare lowercase version of input to the set of valid terms.
if (north_terms_set.find(input_str) != north_terms_set.end()) {
  //User has typed something like 'north', subtract from stamina, etc.
}

虽然 111111 建议的方法更简单,但此方法使您能够限制哪些变体被认为是有效的,还允许您允许替代方案,例如“北”、“上”、“顶”等。

关于c++ - 如何将大量选项组织到一个变量中,然后调用该变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21790229/

相关文章:

c++ - 这不应该使用回溯算法吗?

c++ - 在模板参数列表中转发声明类型名

c++ - 删除_if 在哪里?

c++ - 使用 Boost 图库的 adjacency_matrix

c++ - 为什么析构函数被调用两次?

c++ - 如何使用C++强制向右保留两位小数

c++ - 删除复制构造函数和 operator= 类作用域访问

c++ - 使用 free 时内存使用量没有减少?

c++ - 为字符串类创建复制构造函数

c++ - OpenCV Mat bitwise_xor with randu()