首页 > 后端开发 > C++ > 如何有效地删除 C 字符串中的空格?

如何有效地删除 C 字符串中的空格?

Barbara Streisand
发布: 2024-12-17 20:07:15
原创
566 人浏览过

How Can I Efficiently Remove Whitespace from C   Strings?

从 C 字符串中消除空格

在 C 中,从字符串中删除空格是一项常见任务。一种简单的方法是迭代字符并手动构造一个新字符串。然而,有一个更有效的解决方案。

算法

C STL 提供了一个强大的算法,称为remove_if,可以用于此目的。该算法采用一个谓词函数来确定是否应该删除某个元素,然后从容器中删除所有此类元素。

在这种情况下,我们感兴趣的谓词函数是 isspace,它对于空白返回 true字符,否则为 false。通过将remove_if应用于带有isspace谓词的字符串,我们可以消除所有空白字符。

实现

使用remove_if删除空白字符后,我们需要将字符串缩小到新的大小。这可以使用擦除方法来实现。以下是此方法的完整实现:​​

#include <algorithm>
#include <string>

void remove_spaces(std::string& str)
{
    str.erase(std::remove_if(str.begin(), str.end(), std::isspace), str.end());
}
登录后复制

remove_if 的自定义实现

STL 中的remove_if 算法是一个可以应用于容器的通用函数超越弦。但是,对于像这样的特定用例,实现针对字符串定制的自定义版本可能会更方便:

template <typename T>
T remove_if(T beg, T end, std::function<bool(char)> pred)
{
    T dest = beg;
    for (T itr = beg; itr != end; ++itr)
    {
        if (!pred(*itr))
        {
            *(dest++) = *itr;
        }
    }
    return dest;
}
登录后复制

此自定义实现模仿 STL remove_if 算法的行为,可以使用专门针对基于字符的容器,例如 std::string。

以上是如何有效地删除 C 字符串中的空格?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板