c++ 字符串去除指定的字符

这篇具有很好参考价值的文章主要介绍了c++ 字符串去除指定的字符。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

在C++中,想从一个字符串中移除特定的字符,可以使用 std::string 的成员函数操作字符串,或利用算法库中的 std::remove 或 std::remove_if 函数,欢迎大家补充说明!!!

选择哪一种取决于你的具体应用场景和性能要求。通常,使用 std::remove 或 std::remove_if 与 erase 结合会是一种高效且简洁的方式。

使用 std::string 的 erase 和 find 方法

循环查找并擦除特定字符,逐个字符地搜索并移除字符

#include <iostream>
#include <string>

int main() {
    std::string str = "Hello, World!";
    char char_to_remove = 'l';

    size_t pos;
    while ((pos = str.find(char_to_remove)) != std::string::npos) {
        str.erase(pos, 1);
    }

    std::cout << str << std::endl; // 输出: Heo, Word!
    return 0;
}

使用 std::remove 算法和 erase

std::remove 函数可以用来移除指定的字符,并返回一个新的“逻辑”结束位置。实际的字符串内容没有改变,但所有需要保留的字符已经被移动到字符串的开始位置,其后是需要移除的字符。之后,你可以使用 erase 来擦除尾部不需要的字符。
std::remove 函数不修改容器的大小或者实际结尾,而是返回一个迭代器,指向容器新的“逻辑”结尾。

#include <iostream>
#include <string>
#include <algorithm>

int main() {
    std::string str = "Hello, World!";
    char char_to_remove = 'l';

    str.erase(std::remove(str.begin(), str.end(), char_to_remove), str.end()); 

    std::cout << str << std::endl; // 输出: Heo, Word!
    return 0;
}

使用 std::remove_if 算法和 erase

使用 std::isspace 函数来检查每个字符是否是空白字符(包括空格、换行符等),然后移除它们。

#include <iostream>
#include <string>
#include <algorithm>
#include <cctype> // 对于 std::isspace

int main() {
    std::string str = "Hello, World!\n";
    // 移除所有空格字符
    str.erase(std::remove_if(str.begin(), str.end(), ::isspace), str.end()); 

    std::cout << str << std::endl; // 输出: Hello,World!
    return 0;
}

使用std::remove_if来创建一个新的不包含特定字符的字符串,并通过std::string的erase成员函数来更新字符串的大小,移除不需要的字符。文章来源地址https://www.toymoban.com/news/detail-840937.html

#include <iostream>
#include <string>
#include <algorithm>
/**
 * 使用std::remove_if和lambda表达式来指定我们想要移除的字符。
 * Lambda表达式[char_to_remove](char c) { return c == char_to_remove; }捕获了想要移除的字符并为std::remove_if提供了条件。
 * std::remove_if将不符合条件的字符移至字符串的前部,并返回一个指向新逻辑结尾的迭代器(实质上是指向第一个将要被抹去字符的位置)。
 * 之后,我们使用erase根据new_end和字符串实际结尾的范围删除所有被标记为移除的字符,从而最终获取更新且正确大小的字符串。
 * 这种方法也可以用来移除满足更复杂条件的字符,只需要在lambda表达式中定义相应的条件。
 */
int main() {
    std::string str = "Bananas are amazing!";
    char char_to_remove = 'a';

    // std::remove_if 重新排列字符串,移除指定的字符,返回新的逻辑结尾
    auto new_end = std::remove_if(str.begin(), str.end(),
                                  [char_to_remove](char c) { return c == char_to_remove; });

    // 调用 erase 移除从新逻辑结尾到实际结尾的所有字符
    str.erase(new_end, str.end());

    std::cout << str << std::endl;  // 输出: Bnns re mzing!
    return 0;
}

到了这里,关于c++ 字符串去除指定的字符的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Java 字符串中删除子字符串的9种方法详细内容(remove substring from String)

    Java 中的字符串中删除子字符串有以下方法: 1.Using replace method使用替换方法 2.Using Charsequence使用字符序列 3.Replace the Substring with an empty string用空字符串替换子字符串 4.Using String’s replaceFirst method使用 String 的 replaceFirst 方法 5.replaceFirst() method 6.Using replaceAll method 使用 replaceAll 方

    2024年02月16日
    浏览(40)
  • 【string题解 C++】字符串相乘 | 翻转字符串III:翻转单词

    目录 字符串相乘 题面 错误记录 Way1 拆分成“先乘后加” 思路 实现 时空复杂度分析 反思 Way2 用数组 思路 实现 时空复杂度分析 翻转字符串III:翻转字符串中的单词 题面 错误记录 思路1 遍历找单词 实现 思路2 暴力解法 实现 力扣(LeetCode)官网 - 全球极客挚爱的技术成长平

    2024年02月07日
    浏览(62)
  • C++之string字符串比较方法

    📣📣📣📣📣📣📣📣 ✏️作者主页:枫霜剑客 📋 系列专栏:C++实战宝典 🌲 上一篇: C++之string字符串不同类型间转换 📣📣📣📣📣📣📣📣 🎍逐梦编程,让中华屹立世界之巅。 🎍简单的事情重复做,重复的事情用心做,用心的事情坚持做; 字符串可以和类型相同的字

    2024年02月03日
    浏览(69)
  • C++ string判断是否包含子字符串

    C++的string类提供了字符串中查找另一个字符串的函数find。 其重载形式为: 功能为在string对象中,查找参数string类型的字符串是否存在,如果存在,返回起始位置。不存在则返回 string::npos 。

    2024年02月02日
    浏览(52)
  • C++将字符串中包含指定字符串范围内的字符串全部替换

    将指定字符串所在的范围之内的字符串全部替换为指定的字符串。如: 源字符串: 转换后的字符串: 或者转换为: 本文就是记录一种将上述字符串替换成功的方法。其中转换之后的第一个字符串,实际上是将原有字符串中 “$START$” 和 “$END$” 替换为 “” (空字符串);

    2024年02月07日
    浏览(57)
  • C++中如何将string(字符串)转换为int(整数)

    C++ 编程语言有一些内置数据类型: int , 对于整数(例如 10、150) double ,对于浮点数(例如 5.0、4.5) char ,对于单个字符(例如“D”、“!”) string ,对于字符序列(例如“Hello”) bool , 对于布尔值(true 或 false) C++ 是一种 强类型 编程语言,这意味着当您创建变量时,你

    2024年02月06日
    浏览(80)
  • C++中求string类型字符串长度的三种方法

    length()函数是string的内置成员方,用于返回string类型字符串的实际长度。 length()函数声明: // 返回 string 长度,单位字节 size_t length() const noexcept; 示例1: size()函数与length()一样,没有本质区别。string类刚开始只有length()函数,延续了C语言的风格。引入STL之后,为了兼容又加入

    2024年02月07日
    浏览(65)
  • c++:string相关的oj题(把字符串转换成整数、344.反转字符串、387. 字符串中的第一个唯一字符、917. 仅仅反转字母)

    传送门 首先处理空字符串为空的情况() 再处理第一个字符可能为 + - 的情况,直接定一个 flag 初始化为1,遇到 - 就赋值为-1 接下来就利用迭代器进行循环,如果是字符数字就直接使用 ret = ret * 10 + (*it - \\\'0\\\'); 是其他字符,直接return 0;了 传送门 大家学习了c++,可能直接就想

    2024年01月23日
    浏览(79)
  • Python高频面试题——如何在字符串中删除指定字符,掌握strip()、replace()和re.sub ()正确使用方法!

    关于python删除字符串是面试python测试开发工程师的一个经典问题。问题很简单,但是一下子就能测试出来被面试者是否能够熟练的进行python相关编码工作! 对于有些临时抱佛脚的同学来讲,一看删除,很自然就说用remove 、del相关方法,听到这里,就知道面试者根本不知道这

    2024年02月08日
    浏览(48)
  • c++:string相关的oj题(415. 字符串相加、125. 验证回文串、541. 反转字符串 II、557. 反转字符串中的单词 III)

    传送门 首先,定义两个指针 index1 和 index2 分别指向两个输入字符串的最后一位,用来从后往前遍历字符串。 然后定义一个变量 next 用来表示进位,初始化为 0。 接下来使用一个循环来遍历两个字符串,直到 index1 和 index2 都小于 0。在循环中,每次取出 index1 和 index2 对应位置

    2024年01月23日
    浏览(59)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包