Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.76/25: Рейтинг темы: голосов - 25, средняя оценка - 4.76
2 / 2 / 1
Регистрация: 05.03.2016
Сообщений: 38
1

Сравнение слов в структуре

08.05.2016, 20:25. Показов 4711. Ответов 4

Author24 — интернет-сервис помощи студентам
Есть структура, состоящая из 10 элементов. Часть элементов хранят числовые значения, часть — слова.
Как мне узнать, является ли определённый элемент структуры определённым словом?
Пишу следующее:
C++
1
if (a[i].CountryF == "США")
программа не выводит соответствия (считает, что таких совпадений нет, хотя они есть)

Если пишу одинарные кавычки:
C++
1
if (a[i].CountryF == 'США')
программа подчёркивает == и пишет «несовместимые типы операндов ("char*" и "int")»

В структуре сравниваемая величина объявлена так:
C++
1
2
3
4
5
struct FILMS
{
   <..>
   char CountryF[20];
}
Как исправить?
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
08.05.2016, 20:25
Ответы с готовыми решениями:

Сравнение строк в структуре
Помогите, пожалуйста. Задается структура &quot;Фильм&quot;: вводится название фильма, режиссер, год выпуска и...

Сравнение строк в структуре
смысл таков- я ввожу строку char nomerP, и эта строка должна сравниться с char NO и вернуть мне 0...

Сравнение строк в структуре, чтение из файла
Требуется написать программу, которая считывает из файла данные о студентах, сортирует их по...

Сравнение строки в структуре с переменной типа char
Есть некая функция Х которая возвращает кол-во строк структуры Poezda a, строка a.StNazn в которой...

4
60 / 60 / 53
Регистрация: 17.02.2013
Сообщений: 242
08.05.2016, 20:36 2
Чтобы русские символы корректно считывались, нужно изменить язык консоли. Вот выведите на экран содержимое строки из структуры, и сразу всё станет понятно. И используйте string, на C++ же пишите.
0
29 / 29 / 18
Регистрация: 20.12.2010
Сообщений: 119
08.05.2016, 20:44 3
Лучший ответ Сообщение было отмечено to-z как решение

Решение

массив символов надо сравнивать через strcmp
C++
1
if (strcmp(a[i].CountryF, "США") == 0)
а
C++
1
if (a[i].CountryF == "США")
это сравнение указателей на строки, условие всегда будет false
1
60 / 60 / 53
Регистрация: 17.02.2013
Сообщений: 242
08.05.2016, 20:46 4
4AKE, а лучше всё равно использовать string. Всё же не на Си пишем. И если кодировку (в предыдущем посте неправильно написал. Не язык, а кодировка) не изменить, то даже сравнение через Сишную функцию ничего не даст.
1
2 / 2 / 1
Регистрация: 05.03.2016
Сообщений: 38
08.05.2016, 21:14  [ТС] 5
Соловьёв_Егор, как изменить кодировку? Через эти функции?

C++
1
2
SetConsoleCP(1251);
 SetConsoleOutputCP(1251);
Добавлено через 24 секунды
4AKE, спасибо, теперь всё заработало)
0
08.05.2016, 21:14
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
08.05.2016, 21:14
Помогаю со студенческими работами здесь

Ошибка считывания строки из нескольких слов в структуре
Здравствуйте, есть структура, в которой содержится информация о книге. Если ввести в поле &quot;ФИО&quot; или...

Структура. Сравнение стринга в структуре
Ввожу данные с экрана в структуру. Делаю проверку по алфавиту, если надо меняю местами #include...

Сравнение слов...
Есть предложения, а точнее названия винды, например Windows 7 Ultimate, Windows XP, Microsoft...

Сравнение слов
Суть вопроса Я хочу считать введённое слово в консоли с заранее записанным в строке. Но проверка...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru