Funkcjonalność, której szukasz nie ma w STL'u, aczkolwiek jest w bibliotece zwanej boost. Możesz też napisać własną implementację. Kiedyś miałem podobny problem i napisałem sobie własną funkcję, może Ci się przyda.
std::string trim_left(const std::string &str, const std::string &charset = " ") {
auto it = str.begin();
while(it != str.end() && std::find(charset.begin(), charset.end(), *it) != charset.end()) {
it++;
}
return std::string(it, str.end());
}
std::string trim_right(const std::string &str, const std::string &charset = " ") {
auto it = str.rbegin();
while(it != str.rend() && std::find(charset.begin(), charset.end(), *it) != charset.end()) {
it++;
}
return std::string(str.begin(), it.base());
}
std::string trim(const std::string &str, const std::string &charset = " ") {
return trim_left(trim_right(str, charset), charset);
}