比较运算符==不起作用,如何使其工作? [CPP]

时间:2011-04-03 01:08:22

标签: c++ if-statement equals

我收到以下错误:

C:\Users\*******\Documents\CodeBlocksProjects\encryptText\main.cpp||In function 'int main()':|
C:\Users\*******\Documents\CodeBlocksProjects\encryptText\main.cpp|14|error: no match for 'operator==' in 'givenText == 1'|
C:\Users\*******\Documents\CodeBlocksProjects\encryptText\main.cpp|25|error: no match for 'operator==' in 'givenText == 2'|
||=== Build finished: 2 errors, 0 warnings ===|

使用以下代码:

#include <iostream>
#include <string>
#include "encrypt.h"
#include "decrypt.h"


using namespace std;

int main() {
startOver:
    string givenText, pass;
    cout << "Encrypt (1) or Decrypt (2)?" << endl << "Choice: ";
    getline(cin, givenText);
    if (givenText == 1) {
        cout << endl << "Plain-Text: ";
        getline(cin, givenText);
        cout << endl << "Password: ";
        getline(cin, pass);
        cout << endl << encrypt(givenText, pass) << endl << "Restart? (Y/N)";
        getline(cin, givenText);
        if (givenText == "Y") {
            cout << endl;
            goto startOver;
        }
    } else if (givenText == 2) {
        cout << endl << "Ciphered-Text: ";
        getline(cin, givenText);
        cout << endl << "Password: ";
        getline(cin, pass);
        cout << endl << decrypt(givenText, pass) << endl << "Restart? (Y/N)";
        getline(cin, givenText);
        if (givenText == "Y") {
            cout << endl;
            goto startOver;
        }
    } else {
        cout << endl << "Please input 1 or 2 for choice." << endl;
        goto startOver;
    }

    return 0;
}

我认为它会像if(x == y)那样简单,但我猜不是。我想怎么做才能解决这个问题?提前谢谢!

4 个答案:

答案 0 :(得分:3)

无法直接将字符串与int进行比较。在数字周围使用引号。

答案 1 :(得分:2)

您的字符串没有隐式类型转换,因此您需要:

a)更改测试以比较字符串:if(givenText ==“1”)

b)在比较之前将您的givenText解析为整数:if(atoi(givenText.c_str())== 1)

玩得开心!

答案 2 :(得分:2)

givenText上的数据类型是字符串。您正在将其与整数进行比较。

有两种方法可以解决这个问题,简单的方法是:

if (givenText == "1")

将1视为字符串。

另一个opion(可以使用1,01,0randomCharacters01等),int givenTextInt = atoi(givenText.c_str());

现在你可以这样比较:

 if (givenTextInt == 1)

答案 3 :(得分:1)

1和2是整数,你不能用字符串比较它们。比较“1”和“2”。