? string st5("123456789");
? ? st5.replace(2, 3, "abcdefg", 5);
? ? cout << st5 << endl;//12abcde6789
? ? string st6("123456789");
? ? st6.replace(2, 3, "abc", 20);//超出范围
? ? cout << st6 << endl;//12abc+乱码+6789? 对于char*类型,若超出范围,就会出现乱码
? ? return 0;
}
?
以上各函数的原型及参数的意义大同小异,读者可以触类旁通。现结合以上各示例,对“超出范围”这一特殊情况给出一般性的规律总结:
1.对于string类型,用数字表示范围,超出时,自动截止到字符串的末尾,不会补空格,不会有乱码,也不会出现运行时错误。
2.对于string类型,用迭代器表示范围,超出时,出现运行时错误。
3.对于char*类型,用数字表示范围(只能用数字表示,char*是基本类型,没有迭代器),超出时,会出现乱码。
------------------------------分割线------------------------------
将C语言梳理一下,分布在以下10个章节中: