答案:std::string的erase()函数结合find()可删除字符或子串,如删除首个'a'、所有空格或指定子串"and",推荐使用remove-erase惯用法高效处理,需注意检查npos防止越界。

在C++中,std::string 提供了 erase() 成员函数,可以用来删除字符串中的指定字符或字符段。结合查找函数如 find(),我们可以灵活地移除特定内容。
使用 erase() 删除单个字符或子串
erase() 函数有多种用法:
-
str.erase(pos):从位置 pos 开始删除到末尾 -
str.erase(pos, len):从 pos 删除 len 个字符 -
str.erase(iterator):删除迭代器指向的字符 -
str.erase(first, last):删除一段迭代器范围内的字符
std::string str = "hello world";
size_t pos = str.find('o');
if (pos != std::string::npos) {
str.erase(pos, 1); // 删除一个字符
}
// 结果: "hell world"登录后复制
删除所有指定字符
如果要删除字符串中所有某个字符(如所有空格),可以用循环结合 find() 和 erase():
std::string str = "C++ is powerful";
size_t pos;
while ((pos = str.find(' ')) != std::string::npos) {
str.erase(pos, 1);
}
// 结果: "C++ispowerful"登录后复制
更高效的方法是使用 remove-erase 惯用法(需包含 gorithm>):
立即学习“C++免费学习笔记(深入)”;
版权声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。
还木有评论哦,快来抢沙发吧~