Попытка приравнять struct [array] .variable к символу, которому он соответствует из ввода / вывода [duplicate]

0

Поэтому я пытаюсь заставить файл приравнивать тип структуры (здесь 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;
        }
    }
}
Теги:
arrays
struct
file-io

3 ответа

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.

0

BType - это строка. Вы должны сравнить его со строкой "A", а не с символом "A".

0

Просто измените одинарные кавычки на двойные кавычки:

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

Btype имеет тип std::string и может сравниваться со строковыми литералами (двойными кавычками), но не с объектами типа char (одинарные кавычки).

Здесь вы можете найти дополнительную информацию, в которой перечислены все доступные operator==.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню