c++ - 条件语句简化 - C++

标签 c++ if-statement

在这段代码中减少我的条件的最佳方法是什么,是简单地实现用于字符串比较的 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/

相关文章:

c++ - 如何保持乘法和除法的顺序?

php - 如何使文件编辑成为有条件的?

c++ - 条件语句中的逗号有什么好处?

c++ - 在哪里放置文件以便阅读?

c++ - mingw g++ 4.7.2 中未声明的 decltype

c++ - 获取 vector 的总和

PHP:if (!$val) VS if (empty($val))。有什么不同吗?

javascript - 使用 if..else 语句根据年龄计算分数,脚本仅显示第一个值

windows - 如何在具有多个 IF 语句的 .bat 文件中使用 ELSE 语句?

c++ - 为什么 `boost::asio::deadline_timer`会为每个 `timer_queue`对象分配一个 `deadline_timer`实例呢?