Почему не работает
Проверка наличия цифры в строке
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)