0

そのため、ファイルを構造体型と同等にしようとしています(ここではPatient[i].BType == 'A')。その背後にあるロジックは、ファイル内のその構造体が A を読み取り、何かを出力する場合です。次のエラーが表示されます: エラー: 'Patient[i].Person::BType == 'A'' の 'operator==' に一致しません。人::BType == 'A''

そのタイプの構造体配列をそれが保持する特定の文字と一致させる方法についてのアイデアはありますか?

struct Person{
string surname;
string BType;
string organ;
int age;
int year, ID;
} Patient[50], Donor[50];

次に、対象のコードは次のとおりです。

for (i = 0; i < 5; i++){
    for (i1 = 0; i1 < 5; i1++){
        if ((Patient[i].BType == 'A') && (Donor[i1].BType == 'A')){
            cout << Patient[i].surname << "  " << Donor[i1].surname;
        }
    }
}
4

3 に答える 3

0

一重引用符を二重引用符に変更するだけです。

(Patient[i].BType == "A") && (Donor[i1].BType == "A")

Btypestd::stringであり、文字列リテラル (二重引用符) と比較できますが、型char(一重引用符) のオブジェクトと比較することはできません。

詳細については、利用可能なすべてのoperator==.

于 2013-10-10T03:34:48.733 に答える
0

BType は文字列です。文字「A」ではなく、文字列「A」と比較する必要があります。

于 2013-10-10T03:36:12.337 に答える
0

std::stringを単一charの , 変更と比較しています

if ((Patient[i].BType == 'A') && (Donor[i1].BType == 'A'))

if ((Patient[i].BType == "A") && (Donor[i1].BType == "A")) 

二重引用符を使用する"A"と、C スタイルの文字列になり、一重引用符を使用'A'すると単一のchar.

于 2013-10-10T03:36:15.677 に答える