【发布时间】:2019-11-05 06:19:34
【问题描述】:
我希望我的程序在用户命令中包含以下单词时忽略以下单词:“the”“with”“on”。
目前该程序只接受两个单词作为命令的动词和名词字符串。
string one = "the";
string two = "with";
string three = "on";
string four = "in";
int main()
{
string noun = "";
string verb = "";
getline(cin, verb);
int x = verb.find(' ');
if (x > -1) {
noun = verb.substr(verb.find(" ") + 1);
verb = verb.substr(0, verb.find(" "));
}
if (verb == "living") {
if (noun == "room") {
Livingroom();
}
}
else if (verb == "bed") {
if (noun == "room") {
Bedroom();
}
}
}
我希望程序能够正常工作,即使在用户命令中包含前面提到的单词。
【问题讨论】:
-
为什么不将整行读入
std::string(比如std::string line;)然后从line创建一个std::stringstream(比如std::stringstring ss(line);),然后循环while (ss >> word) { ... }并在循环检查单词以排除并在找到时忽略它们?最好使用std::vector<std::string>来保存要排除的单词,这将使它们易于检查和忽略。 -
将您的排除词放入
std::set或std::unordered_set。 -
@paddy,
std::set非常适合。甚至比std::vector<std::string>上的基于范围的循环更短,以匹配排除词。 std::set