在do while循环中我的代码中没有运算符==或!=的匹配项

时间:2019-07-18 13:08:22

标签: c++ comparison string-comparison comparison-operators

在DO-WHILE循环中==和!=运算符“不匹配”

#include <iostream>

using namespace std;

int main()
{

    string password = "gang";

    int input;
    cin >> input;


    do{

        cout<<"Enter password here:   "<<endl;

        if(input == password){
            break;
        }
        else{
            cout<<"Password incorrect"<<endl;
        }

    }
    while(input != password);
    cout<<"Password correct"<<endl;



    return 0;
}

错误:

C:\Users\New User\Desktop\c++\666666666666658uttu\main.cpp|18|error: no match for 'operator==' (operand types are 'int' and 'std::__cxx11::string {aka std::__cxx11::basic_string<char>}')|

3 个答案:

答案 0 :(得分:4)

因为您正在将字符串与int进行比较

答案 1 :(得分:2)

您正在以int形式读取输入,但会将其与字符串进行比较。

执行此操作

#include <iostream>

using namespace std;

int main()
{

    string password = "gang";

    string input; // <<<<<<HERE
    cin >> input; 


    do{

        cout<<"Enter password here:   "<<endl;

        if(input == password){
            break;
        }
        else{
            cout<<"Password incorrect"<<endl;
        }

    }
    while(input != password);
    cout<<"Password correct"<<endl;



    return 0;
}

答案 2 :(得分:1)

该程序在任何情况下都是错误的。:)

变量p3被声明为类型Player

input

然后,您尝试将输入的整数与类型为int的对象进行比较。

int input;

此外,循环是无限的,因为即使变量std::string被声明为类型string password = "gang"; // ... if(input == password){ ,也不会在循环内更改。

此外,您还应该添加标题input

程序可以按照以下方式显示

std::string