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

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

  • 使用头文件中的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;
}
posted @ 2024-10-11 15:56  风陵南  阅读(230)  评论(0编辑  收藏  举报