#c #string #stl #find #erase
Вопрос:
Я пытаюсь стереть символ из строки. Я попробовал код ниже:
size_t it = s.find(char(i 97)); //dont mind the i, it is just the int in a for loop.
s.erase(it);
Вот тестовый пример:
Ввод: «cccaabababaccbc»
Вывод: «ccc»
Есть какие-нибудь идеи о том, почему это происходит?
Комментарии:
1. Когда вы передаете индекс для стирания, он идет до конца строки. Измените его на s.стереть(it,1). Второй параметр указывает количество символов, которые необходимо удалить. Я предлагаю не называть переменную it, это имя обычно используется для типов итераторов.
2. @RehmaanMomin Большое спасибо, теперь это работает. Не могли бы вы опубликовать свой комментарий в качестве ответа, если это возможно?
Ответ №1:
Когда вы передаете индекс для стирания, он идет до конца строки. Измените его на s.стереть(it,1). Второй параметр указывает количество символов, которые необходимо удалить.
Я предлагаю не называть переменную it, это имя обычно используется для типов итераторов.
Если вы передадите итератор для удаления, то будет удален только этот символ.
Вот документы: https://www.cplusplus.com/reference/string/string/erase/