Задать вопрос
@using_namespace_boring

Не работает алгоритм std find для строки?

string str{"fdsfs dfgdf dgf"};
auto find=std::find(begin(str),end(str),"  ");

Этот код выдает ошибку - нельзя сравнивать указатель и int
В чем проблема?
  • Вопрос задан
  • 341 просмотр
Подписаться 1 Простой 5 комментариев
Помогут разобраться в теме Все курсы
  • Яндекс Практикум
    Разработчик C++
    9 месяцев
    Далее
  • Яндекс Практикум
    Мидл разработчик С++
    4 месяца
    Далее
  • Яндекс Практикум
    Разработчик C++ расширенный
    12 месяцев
    Далее
Решения вопроса 1
wataru
@wataru Куратор тега C++
Разработчик на С++, экс-олимпиадник.
Вы вызываете std::find, который призван искать элемент в коллекции. А пытаетесь искать там строку. Это все почти компилируется, потому что строка - это коллекция символов, по ней можно было бы искать один символ. Но вы передаете туда указатель (ваша строковая константа). Компилятор не может преобразовать его в символ и на это ругается.

Для того, что вам надо - есть std::string::find. Т.е. вам надо вызвать str.find(" ").

Или же ищите один символ. Только не забудьте algorithm включить, а то непонятные ошибки с итераторами полезут.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы