Замена символов в string. "i" буква должна стать "i+1"

Рейтинг: -2Ответов: 1Опубликовано: 09.03.2023

Могу сделать либо так,чтобы заменялась лишь одна буква,либо все буквы после выбранной.К примеру в строке 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;
          }

    }

Ответы

▲ 0

Меняет только одну букву потому, что у вас после замены символа стоит прерывание цикла - оператор break;. И как правильно написали в комментариях - в общем случае вы затираете ноль, завершающий строку.
Должно быть так:

for (int i = 0; i < str.length()-1; i++) // цикл до str.length()-1
    if (str[i] == b)
    {
        str[i + 1] = b;
        break;     // убрать, чтобы перезаписывалось больше 1 символа
    }