Re[2]: Проверка, что строка равна одному из значений
От: AleksandrN Россия  
Дата: 01.04.19 09:58
Оценка:
Здравствуйте, RussianFellow, Вы писали:

RF>Правильно писать:


RF>if ((strcmp(status,"1234")==0)||

RF> (strcmp(status,"2345")==0)||
RF> (strcmp(status,"3456")==0))
RF>{
RF> // do something
RF>}

RF>Потому что в C/C++ строковая переменная представляет собой указатель на самый первый (нулевой) элемент строки. И поэтому для сравнения строк надо пользоваться не = , а функцией strcmp, которая возвращает 0 в случае равенства и ненулевое значение в случае неравенства.


В С++ есть класс std::string, и перегруженный operator==(). Если тип status — std::string, то сравнение status == "1234" сравнивает строки. А strcmp нужно использовать для типов char* или char[].
Отредактировано 01.04.2019 9:59 AleksandrN . Предыдущая версия .
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.