字符串比较不正确

时间:2014-02-28 17:45:00

标签: c++ string if-statement comparison infinity

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

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

如果用户想要输入无穷大,例如他们必须在字符串中输入“Pinf”。

我的问题是我将用户输入存储在std :: string中,然后检查字符串是否为“pinf”或“Pinf”,即使我已输入数字3,因此字符串为“3”,它仍然是进入if语句,我做错了什么?!

我的代码如下;

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

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

3 个答案:

答案 0 :(得分:2)

1.错误 - 您使用|代替||

2.Error - find返回

  

第一场比赛的第一个角色的位置。如果没有匹配   找到后,该函数返回string :: npos。   你应该改变

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

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

答案 1 :(得分:1)

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

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

答案 2 :(得分:0)

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

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