std :: string ==运算符无法在代码中使用[关闭]

问题描述 投票:-4回答:3

因此,我正在使用c ++制作一个简单的计算器,该计算器从用户输入一个字符串并将该输入作为操作。

std::cout<<"Enter your operation: ";
std::string operation;
std::cin>>operation;
while(operation != string("+")|| operation != string("-") || operation != string("*"))
{
    std::cout<<"Invalid operation! Please enter a valid one: ";
    std::cin>>operation;
}

但是无论输入什么,都会收到错误消息“无效的操作!请输入一个有效的字符:”。请在这里帮助我,谢谢!

c++ string loops
3个回答
3
投票

您差点就吃了。您只需要在循环条件中使用布尔运算符 &&而不是 ||

std::cout<<"Enter your operation: ";
std::string operation;
std::cin>>operation;
while(operation != string("+") && operation != string("-") && operation != string("*"))
{
    std::cout<<"Invalid operation! Please enter a valid one: ";
    std::cin>>operation;
}

只要operation不是+,不是-,也不是*,您要一直循环。因此,如果这是其中之一,则条件将为false,并且循环将结束。


0
投票

您有逻辑错误。如果while条件为true,则必须到达错误消息。因此,此条件必须具有&&而不是||,以确保覆盖您的条件。


0
投票

您的逻辑是错误的。正确的是

std::cout<<"Enter your operation: ";
std::string operation;
std::cin>>operation;
while(!(operation == "+"|| operation == "-" || operation == "*"))
{
    std::cout<<"Invalid operation! Please enter a valid one: ";
    std::cin>>operation;
}

并且根据DeMorgan法律,它可以写成

while(operation != "+"&& operation != "-" && operation != "*")
© www.soinside.com 2019 - 2024. All rights reserved.