handmade/include/trim.h

37 lines
638 B
C
Raw Normal View History

#pragma once
/* https://stackoverflow.com/a/217605 */
#include <algorithm>
#include <functional>
#include <cctype>
#include <locale>
// trim from start
static inline
std::string&
ltrim (std::string& s)
{
s.erase (s.begin (), std::find_if (s.begin (), s.end (), std::not1 (std::ptr_fun<int, int>(std::isspace))));
return s;
}
// trim from end
static inline
std::string&
rtrim (std::string& s)
{
s.erase (std::find_if (s.rbegin (), s.rend (), std::not1 (std::ptr_fun <int, int>(std::isspace))).base (), s.end ());
return s;
}
// trim from both ends
static inline
std::string&
trim (std::string& s)
{
return ltrim (rtrim (s));
}