要删除 std::string
的开头空格和结尾空格,可以使用 std::string::erase
函数。
例如:
#include <algorithm>
#include <string>
std::string s = " Hello, World! ";
// 删除开头空格
s.erase(s.begin(), std::find_if(s.begin(), s.end(), [](int ch) {
return !std::isspace(ch);
}));
// 删除结尾空格
s.erase(std::find_if(s.rbegin(), s.rend(), [](int ch) {
return !std::isspace(ch);
}).base(), s.end());
// 输出结果
std::cout << s << std::endl; // 输出 "Hello, World!"
上面的代码使用了一些 STL 函数,包括:
std::find_if
:在序列中查找第一个满足条件的元素。std::isspace
:判断字符是否是空格。std::rbegin
:返回序列的逆序迭代器(从后向前迭代)。std::rend
:返回序列的逆序结束迭代器(从后向前迭代)。std::base
:将逆序迭代器转换为正序迭代器。
需要注意的是,上面的代码使用了 C++11 的 lambda 表达式,如果你的编译器不支持 C++11,可以使用函数指针代替 lambda 表达式。