Замена символов в string. "i" буква должна стать "i+1"
Могу сделать либо так,чтобы заменялась лишь одна буква,либо все буквы после выбранной.К примеру в строке qwerty выбрать r и будет qwerry(то что мне и нужно),но если слово длинное,то заменяет либо одну первую букву,либо вообще не заменяет.
string str;
cin >> str;
char b;
cin >> b;
for (int i = 0; i < str.length(); i++)
{
if (str[i] == b)
{
str[i + 1] = b;
break;
}
}
Ответы (1 шт):
Автор решения: DmitryK
→ Ссылка
Меняет только одну букву потому, что у вас после замены символа стоит прерывание цикла - оператор break;. И как правильно написали в комментариях - в общем случае вы затираете ноль, завершающий строку.
Должно быть так:
for (int i = 0; i < str.length()-1; i++) // цикл до str.length()-1
if (str[i] == b)
{
str[i + 1] = b;
break; // убрать, чтобы перезаписывалось больше 1 символа
}