// trim trailing
const std::string::size_type end = s.find_last_not_of(whitechars);
if (end != std::string::npos) s.resize(end + 1);
// trim leading
const std::string::size_type begin = s.find_first_not_of(whitechars);
if (begin != std::string::npos) s.erase(0, begin);