There is no trim() trimmed() member function in std::string. A free function is better.
Here is one nice solution which has a linear running time and not quadratic like using erase(). (Stupid programmer out there)
From:
http://stackoverflow.com/questions/216823/whats-the-best-way-to-trim-stdstring
std::string trimmed(const std::string &s) {
auto wsfront=std::find_if_not(s.begin(),s.end(), [](int c){return std::isspace(c);});
auto wsback=std::find_if_not(s.rbegin(),s.rend(),[](int c){return std::isspace(c);}).base();
return (wsback<=wsfront ? std::string() : std::string(wsfront,wsback));
}
std::string_view trimmed(std::string_view s) {
auto wsfront = std::find_if_not(s.begin(),s.end(), [](int c){return std::isspace(c);});
// base() returns the forward iterator from reverse iterator returned by rbegin()
auto wsback = std::find_if_not(s.rbegin(),s.rend(),[](int c){return std::isspace(c);}).base();
return wsback <= wsfront ? std::string_view() : std::string_view(wsfront, wsback-wsfront); // its a lower than there. F wordpress
}