Почему не работает

Проверка наличия цифры в строке

if (pas.find('1') != string::npos) // так работает (в строке pas найдена цифра)
if (pas.find('1') = string::npos) // тут убираю (!) 

Выдает ошибку (хотя по логике должно быть в строке pas не найдена цифра. Подскажите, почему так?


Ответы (2 шт):

Автор решения: Sheridan
  • = это операция присваивания значения
  • == это операция сравнения

Ошибку же оно выдаёт потому что значение string::npos не к чему приравнивать, слева не пременная. Более того, код типа

int a = 1, b = 2;
if (a=b) { std::cout << "hello"; }

Будет выводить в stdout "hello", потому что операция присваивания успешно выполнилась. И подобную ошибку достаточно сложно отловить, будьте внимательнее.

→ Ссылка
Автор решения: olkhovich

Потому что вы перепутали оператор присваивания "=" с оператором сравнения "==".

В вашем случае нужно:

if (pas.find('1') == string::npos)
→ Ссылка