📜  c++ 从字符串中删除空格 - C++ (1)

📅  最后修改于: 2023-12-03 15:29:52.350000             🧑  作者: Mango

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

删除字符串中的空格是一个常见的操作,特别是在处理用户输入时。在C++中,我们可以使用标准库中的函数来轻松地实现。

使用STL库函数

C++中的STL库提供了多种字符串操作函数。其中,用于删除字符串中空格的函数是std::remove_if()。我们可以使用该函数与std::string类中的erase()函数结合使用来删除字符串中的空格。

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

int main()
{
    std::string str = "Hello World";

    // 使用 std::remove_if 和 std::string 的成员函数erase() 来删除字符串中的空格
    str.erase(std::remove_if(str.begin(), str.end(), ::isspace), str.end()); 

    std::cout << str << std::endl;

    return 0;
}
  • std::remove_if()函数的作用是对指定区间内的元素进行条件判断,满足条件的元素将被移动到数组的末尾,并返回指向新结尾的迭代器。非满足条件的元素保持原序不变。
  • ::isspace是C++中定义在头文件中的函数,用于判断字符是否为空格,返回值为布尔类型。
自己手写算法

除了使用STL库函数,我们还可以通过手写算法来删除字符串中的空格。具体实现方法如下:

#include <iostream>
#include <string>

void remove_spaces(std::string& str)
{
    int length = str.length();

    // 创建一个新的字符串,用于存储没有空格的字符串 
    std::string new_str;

    for (int i = 0; i < length; i++)
    {
        // 跳过空格字符
        if (str[i] == ' ')
        {
            continue;
        }

        // 如果不是空格字符,则存储到新字符串中
        new_str.push_back(str[i]);
    }

    // 将新字符串赋值回原字符串
    str = new_str;
}

int main()
{
    std::string str = "Hello World";

    // 去掉字符串中的空格
    remove_spaces(str);

    std::cout << str << std::endl;

    return 0;
}
  • 首先,我们获取输入字符串的长度,通过for循环遍历每个字符,如果不是空格字符,则将其添加到新字符串中,最后将新字符串赋值给原字符串。

无论哪种方法,都能够方便地删除字符串中的空格。在实际应用中,我们需要根据具体的场景来选择哪个方法。