首页 > 编程语言 >C++删除字符串中的所有空格与换行(任意字符)

C++删除字符串中的所有空格与换行(任意字符)

时间:2024-10-11 15:48:34浏览次数:10  
标签:std end 删除 换行 元素 C++ 空格 remove str

删除字符串中的所有空格与换行

  • 使用头文件中的remove函数,注意:std::remove 不会改变容器的大小,它只是将元素移动到容器的末尾。因此,我们需要调用 erase 来实际从字符串中删除这些元素。

  • 使用 std::remove 算法,它重排元素,使得要删除的元素(在这里是空格和换行符)被放在序列的末尾,然后返回一个指向新逻辑末尾的迭代器。接着,我们使用 erase 方法来删除这些不需要的字符。

  • 只需替换掉remove函数的第三个参数即可改为删除字符串中的所有该任意字符。

#include <iostream>
#include <string>
#include <alogrithm>

void removeSpacesAndNewlines(std::string& str) {
    // 第三个参数即为要删除的元素(注意是字符串中的全部该元素)
    // remove将匹配的元素移动至末尾(逻辑删除),实际空间仍被占用
    std::string::iterator end_pos = std::remove(str.begin(), str.end(), ' ');
    // 删除掉末尾用不到的元素(并释放掉空间)
    str.erase(end_pos, str.end());

    end_pos = std::remove(str.begin(), str.end(), '\n');
    str.erase(end_pos, str.end());
}

int main() {
    std::string str = " This is a test string with spaces\nand newlines.\n";
    std::cout << "Original string:\n" << str << std::endl;

    removeSpacesAndNewlines(str);

    std::cout << "String after removing spaces and newlines:\n" << str << std::endl;
    return 0;
}

标签:std,end,删除,换行,元素,C++,空格,remove,str
From: https://www.cnblogs.com/1873cy/p/18458578

相关文章

  • C++ 算法学习——1.8 倍增与ST表
    在C++中,"倍增"(也称为"指数增长"或"指数级别增长")是一种算法优化技术,它通常用于解决一些需要频繁查询某个区间内的信息的问题,例如在处理动态规划、搜索等算法中。倍增思想的主要目的是通过预处理和存储一些中间结果,以加速后续的查询操作。具体来说,倍增思想通常包括以下步骤:......
  • C++ 算法学习——1.8 单调队列算法
    单调队列(MonotonicQueue)是一种特殊类型的队列,通常用于解决一些数组或序列相关的问题。和单调栈类似,单调队列也具有一些特定的性质,在解决一些问题时非常有用。以下是关于单调队列的一些重要点:定义:单调队列是一种数据结构,队列中的元素满足单调递增或单调递减的性质。应用:单......
  • Chromium 前端form表单提交过程分析c++
    一、本文以一个简单的HTML表单,包含两个文本输入框和一个提交按钮:<formaction="demo_form.php">Firstname:<inputtype="text"name="fname"><br>Lastname:<inputtype="text"name="lname"><br><i......
  • 实验1 现代C++编程初体验
    实验任务1代码1//现代C++标准库、算法库体验2//本例用到以下内容:3//1.字符串string,动态数组容器类vector、迭代器4//2.算法库:反转元素次序、旋转元素5//3.函数模板、const引用作为形参67#include<iostream>8#include<string>9......
  • 实验1 现代C++编程初体验
    任务1代码:1//现代C++标准库、算法库体验2//本例用到以下内容:3//1.字符串string,动态数组容器类vector、迭代器4//2.算法库:反转元素次序、旋转元素5//3.函数模板、const引用作为形参67#include<iostream>8#include<string>9#inc......
  • C#调用C++ dll教程
    C#调用C++dll教程文章目录一、创建C++dll项目二、C#程序员调用C++dll三、C++与C#数据类型对应基本数据类型对应表C++指针类型与C#类型在使用C#开发客户端时,有时需要调用C++dll,本篇博客来介绍C#程序如何调用C++dll。一、创建C++dll项目首先使用VS2022创建C++d......
  • 【C/C++内存管理】
    【知识预告】C/C++内存分布C语言中动态内存管理方式C++内存管理new和delete的实现原理常见面试题内存泄漏1C/C++内存分布intglobalVar=1;staticintstaticGlobalVar=1;voidTest(){ staticintstaticVar=1; intlocalVar=1; intnum1[10]={1,2,3,......
  • 实验1 现代C++编程初体验
    实验任务11//现代C++标准库、算法库体验2//本例用到以下内容:3//1.字符串string,动态数组容器类vector、迭代器4//2.算法库:反转元素次序、旋转元素5//3.函数模板、const引用作为形参67#include<iostream>8#include<string>9#inc......
  • 多行输入enter发送,enter+shif换行
    <textarea--><!--id="input-id"--><!--class="transparent-input1"--><!--:rows="2"--><!--placeholder="请输入内容,Shift+Enter换行"--><!--......
  • c++map 查找元素和list查找元素速度对比
    在C++中,std::map和std::list是两种不同的容器类型,前者是基于红黑树实现的关联容器,后者是双向链表。如果你想比较这两种容器在查找元素上的速度,通常std::map会比std::list快得多。因为std::map的查找操作是平均常数时间复杂度,即O(logn),而std::list的查找操作是线性时间复杂度,即O(......