C++ 为什么';使用.replace运算符时,字符串长度是否超过16个字符?

C++ 为什么';使用.replace运算符时,字符串长度是否超过16个字符?,c++,string,c++11,stdstring,C++,String,C++11,Stdstring,我正在尝试使用下面代码中的.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

我正在尝试使用下面代码中的.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;
newString=“255.100.50.0”;
int len=newString.length(),i=0;
而(i无论当前字符是否为句点,都可以将
i
增加3。您只需查看第三个位置,只需跳过并错过一些句点,这些句点恰好位于不能被3整除的位置。

无论当前字符是否为句点,您都会将
i
增加3。你只需要看第三个位置,跳过并错过一些周期,那些恰好处于不能被3整除位置的周期。

我想这可能是你的好时机。使用调试器逐行检查程序,看看它是否如您所期望的那样工作。我认为这可能是一个很好的时机。使用调试器逐行检查程序,看看它是否能按预期工作。这是真的!我不必在另一种方法中增加I,这就是为什么这个问题不会发生。谢谢你这是真的!我不必在另一种方法中增加I,这就是为什么这个问题不会发生。非常感谢。