0
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: binary '>>' : no operator found 采用'std::istream' 类型的左操作数(或没有可接受的转换)

对于 strnicmp 错误:错误 C2664: 'strlen' : cannot convert parameter 1 from 'std::string' to 'const char *'

我已经寻找解决此问题的方法,但无法解决。抱歉,如果这里有类似的帖子可以解决我的问题。

4

2 回答 2

1

您是否包括以下内容:

<fstream>
<istream>
<iostream>
<string>

我很确定你忘记了<string>

这是我运行的测试代码,它完美无缺!

#include <string>
#include <iostream>

using namespace std;

int main(int, char**)
{
   string foo;
   cin >> foo;
   cout << foo;
}
于 2012-04-17T13:56:16.083 回答
1

对于 cin 错误:错误 C2678: binary '>>' : no operator found 采用'std::istream' 类型的左操作数(或没有可接受的转换)

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

对于 strnicmp 错误:错误 C2664: 'strlen' : cannot convert parameter 1 from 'std::string' to 'const char *'

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

我怀疑这flights[r].airport[20]也是不正确的,但我不知道,因为您没有发布完整的程序。

如果cust::airport声明为 like std::string airport;,那么您需要flights[r].airport.c_str().

如果cust::airport声明为 like char airport[20];,那么您需要flights[r].airport.

于 2012-04-17T14:04:29.287 回答