在这段代码中减少我的条件的最佳方法是什么,是简单地实现用于字符串比较的 Boost 库还是有其他方法?如果可能的话,我更愿意避免使用 boost。
上述问题如何在以下代码中实现?
cout << " Please Enter An Answer Of Yes(Y) or No(N):";
string question; cin >> question;
if (question == "yes" || question == "Yes" || question == "Y" || question == "y" || question == "YEs" || question == "YES" || question == "yeS" || question == "yES")
{
cout << "You said yes!" << endl;
return 1;
}
else if (question == "No" || question == "NO" || question == "nO" || question == "N" || question == "n")
{
cout << "You said no!" <<endl;
return 0;
}
else
{
AskAQuestion();
}
最佳答案
这可能不是最有效的解决方案,但如果您将整个字符串转换为小写,那么您只需要检查单词和字母而不是所有可能的排列。所以如果你有
void make_lowercase(std::string& data)
{
std::transform(data.begin(), data.end(), data.begin(), ::tolower);
}
然后
cout << " Please Enter An Answer Of Yes(Y) or No(N):";
string question; cin >> question;
if (question == "yes" || question == "Yes" || question == "Y" || question == "y" || question == "YEs" || question == "YES" || question == "yeS" || question == "yES")
//...
成为
cout << " Please Enter An Answer Of Yes(Y) or No(N):";
string question;
cin >> question;
make_lowercase(question);
if (question == "yes" || question == "y")
//...
关于c++ - 条件语句简化 - C++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51267018/