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: バイナリ '>>' : タイプ 'std::istream' の左側のオペランドを取る演算子が見つかりません (または、受け入れ可能な変換がありません)

strnicmp エラーの場合: エラー C2664: 'strlen': パラメーター 1 を 'std::string' から '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: バイナリ '>>' : タイプ '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];、 が必要flights[r].airportです。

于 2012-04-17T14:04:29.287 に答える