我收到以下错误:
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)那样简单,但我猜不是。我想怎么做才能解决这个问题?提前谢谢!
答案 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”。