Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.86/21: Рейтинг темы: голосов - 21, средняя оценка - 4.86
Just Do It!
 Аватар для XLAT
4204 / 2662 / 654
Регистрация: 23.09.2014
Сообщений: 9,046
Записей в блоге: 3

Почему std::string::find не находит подстроку?

01.12.2018, 23:21. Показов 4190. Ответов 6

Студворк — интернет-сервис помощи студентам
Вот:
C++
1
2
3
    std::string str = "01234567890";
    int p = str.find("23", 0, 5);
    std::cout << p;
На экране моника вывод проs'а:
-1

Кликните здесь для просмотра всего текста
Компилятор vc++2015:
========== Build: 1 succeeded, 0 failed, 0 up-to-date, 0 skipped ==========

Куда смотрел:
http://www.cplusplus.com/refer... ring/find/
C++
1
size_t find(const char* str, size_t indx, size_t len) const;
Возвращает индекс первого вхождения первых len символов строки str внутри данной строки. Поиск начинается с индекса indx. Если совпадения не обнаружено, возвращает значение npos


запутался я в трех соснах?
пжлста, покажите выход!
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
01.12.2018, 23:21
Ответы с готовыми решениями:

std::string::find и кириллица
есть простенький код #include &lt;iostream&gt; // std::cout #include &lt;string&gt; // std::string int main () { ...

Как работает функция std::string::find(...)
здравствуйте есть допустим вот такой код #include &lt;iostream&gt; #include &lt;string&gt; using namespace std; int main() { string...

Почему std::string_view МЕДЛЕННЕЕ, чем std::string?
Всем привет! Нужно найти количество уникальных строк в больших текстовых файлах (размером до нескольких гигабайт). Почему в...

6
Эксперт .NET
 Аватар для Даценд
5878 / 4755 / 2939
Регистрация: 20.04.2015
Сообщений: 8,361
01.12.2018, 23:28
C++
1
int p = str.find("23", 0, 2);
1
Just Do It!
 Аватар для XLAT
4204 / 2662 / 654
Регистрация: 23.09.2014
Сообщений: 9,046
Записей в блоге: 3
01.12.2018, 23:59  [ТС]
Цитата Сообщение от Даценд Посмотреть сообщение
int p = str.find("23", 0, 2);
вот же блин,
а я губу раскатал, думал третий аргумент ограничивает итератор в str, так как он у меня громадный и нуль-терминатор далеко за горизонтом, теперь вот что делать ..., буду копировать диапазон в строку и искать там...

или ну его в баню энтот стринг и делать на чарах.
0
19497 / 10102 / 2461
Регистрация: 30.01.2014
Сообщений: 17,808
02.12.2018, 00:09
Лучший ответ Сообщение было отмечено XLAT как решение

Решение

Цитата Сообщение от XLAT Посмотреть сообщение
теперь вот что делать
используйте std::find и т.п. функции.
0
Just Do It!
 Аватар для XLAT
4204 / 2662 / 654
Регистрация: 23.09.2014
Сообщений: 9,046
Записей в блоге: 3
02.12.2018, 01:40  [ТС]
Цитата Сообщение от DrOffset Посмотреть сообщение
используйте std::find и т.п. функции.
тут вопрос не в том чтобы РАБОТАЛО, а чтобы работало эффективно(быстро).
Речь о строке размером ~1 гигабайт. И тут надо как можно меньше служебных копирований (substr).
Но не хотелось скатываться до чаров, или тем более писать свой string.

хотя...
он у меня уже есть давно:
C++
1
2
3
4
struct string
{   char* p;
    size_t size;
};
))
0
Неэпический
 Аватар для Croessmah
18146 / 10730 / 2066
Регистрация: 27.09.2012
Сообщений: 27,029
Записей в блоге: 1
02.12.2018, 05:38
Лучший ответ Сообщение было отмечено XLAT как решение

Решение

Цитата Сообщение от XLAT Посмотреть сообщение
а чтобы работало эффективно(быстро).
Поиск-то линейный.
Цитата Сообщение от XLAT Посмотреть сообщение
И тут надо как можно меньше служебных копирований (substr).
std::string_view?
1
19497 / 10102 / 2461
Регистрация: 30.01.2014
Сообщений: 17,808
02.12.2018, 15:42
Цитата Сообщение от XLAT Посмотреть сообщение
тут вопрос не в том чтобы РАБОТАЛО, а чтобы работало эффективно(быстро).
Как правильно выше сказали, что string.find, что std::find выполняют линейный поиск. Т.е. эффективность у них одинаковая.

Добавлено через 11 минут
Цитата Сообщение от XLAT Посмотреть сообщение
чтобы работало эффективно(быстро)
А для этого вообще нужно было начинать с озвучивания задачи, описания граничных условий. Тасованием линейно-работающих функций вы ничего не добьетесь существенного. Хотите выигрыша в скорости - меняйте подход к решению. Например можно посмотреть в сторону деревьев поиска.

А вот писать мне так, как будто я предлагаю лишь бы какое решение -- не надо. Как вы задачу сформулировали, такой ответ и получили.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
02.12.2018, 15:42
Помогаю со студенческими работами здесь

ошибка error: cannot convert 'std::string {aka std::basic_string<char>}' to 'std::string* {aka std::basic_stri
на вод поступают 2 строки типа string. определить количество вхождений строки 2 в строку 1 ошибка error: cannot convert 'std::string {aka...

Где и почему используют ту или иную строку std::string, char[], System::String^ ?
Где и почему используют ту или иную строку std::string, char, System::String^ ? Объясните пожалуйста где нужно использовать...

Запрошено преобразование от ‘const std::string*’ к нескалярному типу ‘std::string’
private: std::string firstName; }; std::string ClientData::getFirstName() const{ return firstName; } Дает в итоге...

На основе исходного std::vector<std::string> содержащего числа, создать std::vector<int> с этими же числами
подскажите есть вот такая задача. Есть список . Создать второй список, в котором будут все эти же числа, но не в виде строк, а в виде...

Не могу разобраться как обновить в std::map<std::string, вектор_структур>
Не могу разобраться как обновить вектор структур после его добавления в map без удаления и перезаписи struct pStruct { int...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Работа со звуком через SDL3_mixer
8Observer8 08.02.2026
Содержание блога Пошагово создадим проект для загрузки звукового файла и воспроизведения звука с помощью библиотеки SDL3_mixer. Звук будет воспроизводиться по клику мышки по холсту на Desktop и по. . .
SDL3 для Web (WebAssembly): Основы отладки веб-приложений на SDL3 по USB и Wi-Fi, запущенных в браузере мобильных устройств
8Observer8 07.02.2026
Содержание блога Браузер Chrome имеет средства для отладки мобильных веб-приложений по USB. В этой пошаговой инструкции ограничимся работой с консолью. Вывод в консоль - это часть процесса. . .
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru