0

所以我试图让文件等同于结构类型(在这里 Patient[i].BType == 'A')。其背后的逻辑是,如果文件中的结构读取 A,则输出一些东西。它给了我以下错误:错误:'Patient[i].Person::BType =='A''中的'operator=='不匹配错误:'Donor[i1] 中的'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")

Btype是 type std::string,并且可以与字符串文字(双引号)进行比较,但不能与类型的对象char(单引号)进行比较。

您可以在此处找到更多信息,其中列出了所有可用的operator==.

于 2013-10-10T03:34:48.733 回答
0

BType 是一个字符串。您应该将其与字符串“A”而不是字符“A”进行比较。

于 2013-10-10T03:36:12.337 回答
0

您正在将 astd::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 回答