2013-10-10 41 views
0

所以我試圖讓文件等同結構類型(在這裏Patient [i] .BType =='A 「)。它後面的邏輯是,如果該文件中的結構讀取A,則輸出內容。它給我的錯誤: 錯誤:'Patient [i] .Person :: BType =='A'''中的'operator =='沒有匹配' 錯誤:'捐獻者[i1 ] .Person :: BType =='A''嘗試將struct [array] .variable等同於它與輸入/輸出匹配的字符

任何想法如何匹配這種類型的結構數組與它持有的特定字符?

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; 
     } 
    } 
} 
+0

全部3個答案都可以用。謝謝。愚蠢的錯誤,顯然你可以告訴我這是一個新手。 :/ –

回答

0

你比較單一char一個std::string,改變

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

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

用雙引號,"A"是C風格的字符串,而單引號'A'是單char

0

單引號只要切換到雙引號:

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

Btypestd::string型的,並且可以用字符串文字進行比較(雙引號),但不包括類型爲char(單引號)的對象。

你可以找到more information here其中列出了所有可用的operator==

0

BType是一個字符串。您應該將其與字符串「A」進行比較,而不是字符「A」。

相關問題