C++或条件不正常工作

C++或条件不正常工作,c++,C++,我现在有一个非常奇怪的问题,那就是我的状况不能正常工作。 这是我的代码: cout << "Please enter type: "; cin.ignore(); std::getline(std::cin, type); transform(type.begin(), type.end(), type.begin(),::toupper); cout << type << endl; if (type !=

我现在有一个非常奇怪的问题,那就是我的状况不能正常工作。 这是我的代码:

cout << "Please enter type: "; 
    cin.ignore();
    std::getline(std::cin, type);
    transform(type.begin(), type.end(), type.begin(),::toupper);
    cout << type << endl;
        if (type != "TYPE B" || type != "B"){   
            cout << "Please re-enter type: ";

            std::getline(std::cin, type);

            }
        }
当我输入值b或类型b时,它将我带入了不应该发生的循环。
你知道如何解决这个问题吗?

这总是正确的,你会被要求重新输入类型


您希望&&而不是| |-如果不是类型B,也不是类型B,您希望重新输入类型

这将始终是真的,并且会要求您重新输入类型

您想要&而不是| |-如果不是类型B,也不是类型B,您想要重新输入类型!

type!=B型| |型!=表达总是正确的。无论类型是什么,它都不能等于两个彼此不相等的字符串

如果目的是只允许B和类型B字符串,请使用&&,如下所示

if (type != "TYPE B" && type != "B")
或者否定结果,或者,像这样:

if (!(type == "TYPE B" || type == "B"))
类型!=B型| |型!=表达总是正确的。无论类型是什么,它都不能等于两个彼此不相等的字符串

如果目的是只允许B和类型B字符串,请使用&&,如下所示

if (type != "TYPE B" && type != "B")
或者否定结果,或者,像这样:

if (!(type == "TYPE B" || type == "B"))

您即将实现的类型!=B型| |型!=B永远是真的。这不可能是同时发生的。天哪,谢谢!真不敢相信我会犯这种简单的错误。你即将意识到这一点B型| |型!=B永远是真的。这不可能是同时发生的。天哪,谢谢!真不敢相信我会犯这种简单的错误。。