Lexer: Modified ::trim to make one less copy

This commit is contained in:
Paul Beckingham 2015-10-30 11:41:16 -04:00
parent 182b5427cd
commit 6ce3285c77

View file

@ -509,22 +509,27 @@ std::string Lexer::ucFirst (const std::string& input)
////////////////////////////////////////////////////////////////////////////////
std::string Lexer::trimLeft (const std::string& in, const std::string& t /*= " "*/)
{
std::string out = in;
return out.erase (0, in.find_first_not_of (t));
std::string::size_type ws = in.find_first_not_of (t);
if (ws > 0)
{
std::string out {in};
return out.erase (0, ws);
}
return in;
}
////////////////////////////////////////////////////////////////////////////////
std::string Lexer::trimRight (const std::string& in, const std::string& t /*= " "*/)
{
std::string out = in;
return out.erase (out.find_last_not_of (t) + 1);
std::string out {in};
return out.erase (in.find_last_not_of (t) + 1);
}
////////////////////////////////////////////////////////////////////////////////
std::string Lexer::trim (const std::string& in, const std::string& t /*= " "*/)
{
std::string out = in;
return trimLeft (trimRight (out, t), t);
return trimLeft (trimRight (in, t), t);
}
////////////////////////////////////////////////////////////////////////////////