字符串比较不正确

Incorrect string comparison

本文关键字:不正确 比较 字符串      更新时间:2023-10-16

我有一个问题,我根本想不通!

在我的程序中,用户输入要排序的数字。 我必须能够对无穷大、负无穷大和所谓的"空性"(我在程序早期定义的这些)进行排序。

例如,如果用户想要输入无穷大,则必须在字符串中输入"Pinf"。

我的问题是我将用户输入存储在 std::string 中,然后检查字符串是"pinf"还是"Pinf",即使我输入了数字 3,所以字符串是"3",它仍然进入 if 语句,我做错了什么?!

我的代码如下;

    string Temp;
    cin>> Temp;
    if (Temp.find("Pinf")||Temp.find("pinf")) {
        Num = Pinfinity;
    }

它认为 if 语句每次都是正确的。

1.错误 - 您使用的是|而不是||

2.错误 - find返回

第一个匹配项的第一个字符的位置。如果没有匹配项 找到,该函数返回字符串::NPOS。 你应该改变

if (Temp.find("Pinf")|Temp.find("pinf")) {

if ((Temp.find("Pinf") != string::npos) || (Temp.find("pinf") != string::npos)) {

如果您只是搜索 Pinf 或 pinf,那么您可以使用它。请注意,逻辑或运算符||

 if (Temp == "Pinf" || Temp == "pinf") {

|是按位或运算符。使用||代替|

if ( Temp.find("Pinf") != npos || Temp.find("pinf") != npos )