Почему длина строки не превышает 16 символов при использовании оператора .replace? - PullRequest
0 голосов
/ 07 июля 2019

Я пытаюсь заменить символ '.'в моей строке с "[.]", используя функцию .replace, как вы можете видеть в коде ниже.Тем не менее, строка не превышает 16 символов.С другой стороны, с помощью функции .insert нет ограничений на длину строки.Есть ли объяснение этому поведению?Спасибо

Я использовал вместо этого функцию .insert.

newString = "255.100.50.0";
int len = newString.length(), i =0;
while(i < len){if(newString[i] == '.'){
    newString.replace(i,1, "[.]");
    len = newString.length();
    }
    i += 3;
}
cout << newString << endl;

1 Ответ

2 голосов
/ 07 июля 2019

Вы увеличиваете i на 3 независимо от того, является ли текущий символ точкой.Вы только когда-либо смотрите на каждую третью позицию и просто пропускаете и пропускаете некоторые периоды, те, которые оказываются в позиции, не делимой на 3.

...