void searchFlight(cust flights[] ,int row)
{
    clrscr();
    cout << "Search for the flight you are looking for.\n";

    string airport;

    cout << "Enter Departing Flight : ";
    cin >> airport;   //error

    for (int r=0;r<row;r++)
    {
        if (strnicmp(airport, flights[r].airport[20], strlen(airport) ==0) //error
        {
            clrscr();
            cout << flights[r].name[20] <<endl;
            cout << flights[r].airport[20] <<endl;
            cout << flights[r].destination[20] <<endl;
            cout << flights[r].ticket <<endl;
            cout << flights[r].passangers <<endl;
            cout << flights[r].opCost <<endl;
            cout << flights[r].income <<endl;
            cout << flights[r].netProfit <<endl;;
            pressKey();
        }
    }
    pressKey();
}


对于cin错误:
错误C2678:二进制'>>':未找到采用'std :: istream'类型的左操作数的运算符(或没有可接受的转换)

对于strnicmp错误:
错误C2664:'strlen':无法将参数1从'std :: string'转换为'const char *'

我已经搜索了此问题的解决方案,但无法解决。抱歉,如果这里有类似的帖子可能已经解决了我的问题。

最佳答案

对于cin错误:错误C2678:二进制'>>':未找到采用'std :: istream'类型的左操作数的运算符(或没有可接受的转换)


#include <string>添加到您的CPP文件。


  对于strnicmp错误:错误C2664:'strlen':无法将参数1从'std :: string'转换为'const char *'


确认您的CPP文件具有#include <cstring>,然后将呼叫替换为:
    strnicmp(airport.c_str(), flights[r].airport[20], strlen(airport.c_str()) ==0

我怀疑也不正确,但是我不知道,因为您没有发布完整的程序。

如果flights[r].airport[20]的声明类似于cust::airport,则需要std::string airport;

如果flights[r].airport.c_str()的声明类似于cust::airport,则需要char airport[20];

关于c++ - C++ cin和strnicmp无法正常工作,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10192483/

10-10 20:32