Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / C++ [игнор отключен] [закрыт для гостей] / Работа со строками / 8 сообщений из 8, страница 1 из 1
17.11.2006, 11:14
    #34135746
imnoob
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Работа со строками
Здравствуй, All! 1) Не подскажете, как лучше организовать такую задачу: в строке s1 заменить все вхождения подстроки s2 на подстроку s3? Ф-ей strstr() находится только первое вхождение, а как сделать, чтобы находились все? 2) Или лучше использовать массивный метод перебора и определения вхождения? Если можно, пример кода
...
Рейтинг: 0 / 0
17.11.2006, 11:39
    #34135856
maXmo
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Работа со строками
находишь сначала первое вхождение, потом второе, потом - по желанию - третье, ну и если совсем маньяк - четвёртое.
...
Рейтинг: 0 / 0
17.11.2006, 11:45
    #34135886
Akh
Akh
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Работа со строками
Находишь первое. Запоминаешь, где нашел. Заменяешь. То что запомнил апдейтишь в соответствии с разницей длин строк заменяемой и заменяющей. А далее по принципу maXmo. :)
...
Рейтинг: 0 / 0
17.11.2006, 11:46
    #34135898
Cerebrum
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Работа со строками
strtok


--------------------------------------------------------------
[подпись с другого сайта]
...
Рейтинг: 0 / 0
17.11.2006, 19:06
    #34137793
imnoob
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Работа со строками
В принципе я пока печатал сообщение уже допетрил примерно как это сделать... strstr'ом ищу первое вхождение, заменяю (в цикле), уже замененную строку проверяю снова и снова.. и пока не найду \0 )) Что-то типа рекурсии получается.. а что за ф-ия strtok?
...
Рейтинг: 0 / 0
17.11.2006, 19:18
    #34137805
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Работа со строками
AkhНаходишь первое. Запоминаешь, где нашел. Заменяешь. То что запомнил апдейтишь в соответствии с разницей длин строк заменяемой и заменяющей. А далее по принципу maXmo. :)
Апдейт для строк в общем случае происходит тяжеловато. Слишком ненужных транзакций по куче , особенно, если length(s2)<>length(s3). Лучше создать новую строку s4 и накапливать в ней строку s1 с учётом изменений. Мой совет не будет казатся странным, если представить, что строка - это небольшой текстовый файл.
...
Рейтинг: 0 / 0
20.11.2006, 09:53
    #34139982
Akh
Akh
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Работа со строками
mayton AkhНаходишь первое. Запоминаешь, где нашел. Заменяешь. То что запомнил апдейтишь в соответствии с разницей длин строк заменяемой и заменяющей. А далее по принципу maXmo. :)
Апдейт для строк в общем случае происходит тяжеловато. Слишком ненужных транзакций по куче , особенно, если length(s2)<>length(s3). Лучше создать новую строку s4 и накапливать в ней строку s1 с учётом изменений. Мой совет не будет казатся странным, если представить, что строка - это небольшой текстовый файл.

Да. Согласен. Но чтобы по десять раз не менять размер памяти для целых файлов, то лучше будет придумать какой-нибудь другой алгоритм. Например, сохранение индексов в векторе. После, вычисление размера результирующей строки, и, соответственно, завершающие операции. Но, мне кажется, вопрос стоит не в оптимальности.
...
Рейтинг: 0 / 0
20.11.2006, 11:43
    #34140334
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Работа со строками
strtok здесь ни к селу ни к городу. Оно совсем из другой оперы - разбивка строки на части с помощью разделителей.
...
Рейтинг: 0 / 0
Форумы / C++ [игнор отключен] [закрыт для гостей] / Работа со строками / 8 сообщений из 8, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]