Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: замена строк
Форум на CrossPlatform.RU > Разработка > С\С++
B_u_R_n
Есть функция поиска индекса
int Find(char *src, char *_src)
{
    for(int i=0;src[i];i++)
        if(src[i]==_src[0])
            for(int j=i,k=0;src[j]==_src[k];j++,k++)
                if(k==strlen(_src)-1)
                    return i;
    return -1;
}

Вот хотелось бы с помошью нее организовать поиск в строке всех вхождений подстроки, (по сути пока не вернет -1 т.е. нет одинаковых строк) и после заменить их на произвольные , которые я передам в функцию

Простите за спам, форум тупит
Iron Bug
тебе это ради упражнения или как?
потому что, раз уж это всё равно C++, то есть стандартная функция стандартной библиотеки работы со строками string::replace.

с заменой никаких проблем нет: создаёшь вторую рабочую строку и копируешь туда нужные куски. длина строки после замены может быть произвольной, поэтому тут в любом случае нужно будет динамически выделять память и возвращать другую строку. вопрос только в том, как ты её будешь возвращать и кто потом будет чистить выделенную память.

а так, этот код ещё оптимизировать и оптимизировать, если по-хорошему.
зачем ты столько раз вызываешь strlen(_str)? конечно, компилятор что-то оптимизирует, но не факт, что при такой вложенности он сообразит, что это просто константа в рамках данной функции. да и сравнивать посимвольно таким методом - это медленно. есть memcmp чтобы сравнивать блоки данных. она значительно быстрее.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Форум IP.Board © 2001-2024 IPS, Inc.