与控制台应用程序中的字符串文字进行比较

时间:2011-06-22 08:42:09

标签: c++ character-encoding

我有一个简单的原生C ++控制台应用程序 我想保留这样的东西:

Quit? (Y/N)

并能够输入Y或N来告诉程序该怎么做? 到目前为止,我有这段代码:

std::string whetherToQuit;
std::cout<<"Quit? (Y/N): ";
std::cin>>whetherToQuit;
if(whetherToQuit == "Y"){
        exit(EXIT_SUCCESS);
}
else if (whetherToQuit == "N"){
        break;
}

MSVC ++给了我一个警告,我认为应该有更好的方法来做到这一点 如果重要我正在使用Windows 有什么建议吗?

3 个答案:

答案 0 :(得分:2)

为什么不使用char代替:

char ans;
std::cout << "Quit? (Y/N): ";
std::cin >> ans;
if (ans == 'Y') {
    return 0;
}
else if (ans == 'N') {
    break;
}

答案 1 :(得分:0)

警告信息是什么?

你可以这样做:

const std::string strYes = "Y";
const std::string strNo = "N";

然后与这个常数进行比较。

答案 2 :(得分:0)

有三点值得一提:

  1. 你为什么要使用字符串?改为使用char:

    char ans; if(ans =='Y'){ // op } 否则if(ans =='N'){ // op }

  2. 为什么你在其他地方使用“break”。 break语句只能在开关或循环中使用。

  3. [已添加]使用return而不是Exit。退出绕过RAII。

  4. 最终代码应该看起来像

    char ans;
    std::cout << "Quit? (Y/N): ";
    std::cin >> ans;
    if (ans == 'Y') {
        return 0;
    }
    else if (ans == 'N') {
        // No op;
    }