我正在制作一个简单的程序,如果您输入“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/