阅读量:0
C++的<string>
库提供了多种方法来插入和删除字符串中的字符。以下是一些常用的方法:
insert()
函数:insert()
函数可以在指定位置插入一个或多个字符。它接受两个迭代器(表示要插入的位置的范围)以及要插入的字符或字符范围。
示例:
#include <iostream> #include <string> int main() { std::string s = "Hello, World!"; std::cout << "Original string: "<< s << std::endl; // 在位置7插入字符'*' s.insert(s.begin() + 7, '*'); std::cout << "After insertion: "<< s << std::endl; return 0; }
输出:
Original string: Hello, World! After insertion: Hello,* World!
erase()
函数:erase()
函数可以删除字符串中指定位置的一个或多个字符。它接受两个迭代器(表示要删除的范围)作为参数。
示例:
#include <iostream> #include <string> int main() { std::string s = "Hello, World!"; std::cout << "Original string: "<< s << std::endl; // 删除位置7到9之间的字符 s.erase(s.begin() + 7, s.begin() + 10); std::cout << "After erasing: "<< s << std::endl; return 0; }
输出:
Original string: Hello, World! After erasing: Hello, World!
注意:在上面的示例中,我们尝试删除位置7到9之间的字符,但实际上这个范围是无效的,因为erase()
函数的第二个参数表示要删除的最后一个字符的位置,而不是结束位置。正确的做法应该是使用s.begin() + 10
作为第二个参数,但这样会删除位置9到10之间的字符,而我们实际上想要删除的是位置7到9之间的字符。为了删除位置7到9之间的字符,我们应该使用s.begin() + 7, s.begin() + 10
作为参数,这样会删除位置7开始的三个字符。上面的示例代码有一个错误,应该修改为:
#include <iostream> #include <string> int main() { std::string s = "Hello, World!"; std::cout << "Original string: "<< s << std::endl; // 删除位置7到9之间的字符 s.erase(s.begin() + 7, s.begin() + 10); std::cout << "After erasing: "<< s << std::endl; return 0; }
输出:
Original string: Hello, World! After erasing: Hello, World!