Поэтому я пытаюсь заставить файл приравнивать тип структуры (здесь Patient [i].BType == 'A'). Логика позади этого - если эта структура в файле читает A, выведите что-то. Это дает мне ошибки: error: нет соответствия для 'operator ==' в 'Patient [i].Person :: BType ==' A '' ошибка: нет соответствия для 'operator ==' в 'Donor [i1]. Person :: 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;
}
}
}
Вы сравниваете 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
.
BType - это строка. Вы должны сравнить его со строкой "A", а не с символом "A".
Просто измените одинарные кавычки на двойные кавычки:
(Patient[i].BType == "A") && (Donor[i1].BType == "A")
Btype
имеет тип std::string
и может сравниваться со строковыми литералами (двойными кавычками), но не с объектами типа char
(одинарные кавычки).
Здесь вы можете найти дополнительную информацию, в которой перечислены все доступные operator==
.