@shvaidahder

Как удалить часть строки в c++?

товарисчи, нужна помощь! пытаюсь реализовать функцию со строками, (не используя класс string!!!) и тут столкнулся с небольшой проблеммой. Объясняю суть: существует две си-строки, предположим, s1 = "how do you feel" и s2 = "how". программа должна найти строку s2 в строке s1, и если такая найдется - s1 должен избавиться от строки s2, то есть на выходе должно получиться " do you feel". С поиском элементов проблем никаких нет, а вот с удалением я немного застрял. писал как s1[i] = s1[i + strlen(s2)] (с соответствующим условием, конечно), но, разумеется, ошибка. и тут вопрос : как сдвинуть строку на нужное кол-во элементов без методов string?
Буду весьма благодарен за помощь
  • Вопрос задан
  • 1421 просмотр
Решения вопроса 1
@Mercury13
Программист на «си с крестами» и не только
Так и надо, но не хватает только одного: каким-то образом обрезать строку после всего этого.
for (…)
  s1[i] = s1[i + s2len]
s1.resize(s1.length() - s2len);

Не забывайте: если длина вашей строки — это strlen, то length() в цикле вызывать запрещено!

Да, ещё вопрос: убрать ПЕРВОЕ вхождение или ВСЕ вхождения?
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@res2001
Developer, ex-admin
Вам просто нужно скопировать остаток строки в начало найденной подстроки.
Думаю лучше всего воспользоваться функцией стандартной Си библиотеки memmove().
И в конце не забудьте воткнуть нулевой символ.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы