从 C++ 中的字符串中删除空格

Google Translate Icon

这篇文章将讨论如何在 C++ 中从字符串中删除空格。

默认情况下,以下字符被视为空白字符:

  1. 空间 ' '
  2. 换行 '\n'
  3. 回车 '\r'
  4. 水平制表符 '\t'
  5. 换页 '\f'
  6. 垂直制表符 '\v'

1.使用 std::remove_if 功能

标准解决方案是使用 std::remove_if 删除空白字符的算法 std::string 使用 擦除删除成语 技术。由于 std::remove_if 算法实际上并不从字符串中删除字符,而是移动所有 非空白 字符到前面并返回一个指向结束位置的迭代器。然后我们可以通过调用来删除空白字符 std::erase.

 
std::remove_if 需要一个谓词来确定要从字符串中删除哪些字符。有很多方法可以指定删除空格字符的谓词:

::isspace

我们可以用 isspace() 中定义的 cctype 标头,它检查按当前安装的 C 语言环境分类的空白字符。

下载  运行代码

输出:

HelloWorld

std::isspace

我们可以使用 C 语言环境分类的空白字符,而不是依赖于 std::isspace 在标题中定义 locale,它使用指定语言环境的 ctype facet 对空白字符进行分类。

下载  运行代码

 
使用 C++11,我们可以使用 lambdas 而不是 std::bind:

下载  运行代码

⮚ 自定义谓词

而不是使用 ::isspace 或者 std::isspace,我们甚至可以编写一个自定义谓词,如果字符被归类为空白字符,则返回 true,否则返回 false。在 C++ 中有很多方法可以实现这一点:

⮚1.一元函数

下载  运行代码

⮚2.实现类的对象 () 操作员

下载  运行代码

⮚3.拉姆达

下载  运行代码

2.使用 std::regex_replace 功能

使用 C++11,我们还可以使用 std::regex_replace 为了这。如下所示:

下载  运行代码

3. 使用 Boost 库

最后,我们可以一起去 boost::algorithm::erase_all,这会删除所有出现的 空间 来自输入的字符串。

下载代码

这就是从 C++ 中的字符串中删除空格的全部内容。

评价这篇文章

平均评分 4.63/5。票数: 24

暂时没有票!成为第一个给这篇文章评分的人。

很抱歉这篇文章对您没有用处!

告诉我们如何改进这篇文章?




谢谢阅读。

请使用我们的 在线编译器 使用 C、C++、Java、Python、JavaScript、C#、PHP 和许多更流行的编程语言在评论中发布代码。

像我们?将我们推荐给您的朋友,帮助我们成长。快乐编码 :)



订阅
通知
guest
2 注释
投票最多
最新 最老的
内联反馈
查看所有评论
请勿点击此链接,否则您将被禁止访问该网站!