删除字符串中的所有空格与换行
-
使用
头文件中的 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