Информация об изменениях

Сообщение Re[2]: Проверка, что строка равна одному из значений от 01.04.2019 9:58

Изменено 01.04.2019 9:59 AleksandrN

Re[2]: Проверка, что строка равна одному из значений
Здравствуйте, 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[].
Re[2]: Проверка, что строка равна одному из значений
Здравствуйте, 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[].