Я просто написал простую функцию утилиты для std::string. Затем я заметил, что функция будет выглядеть точно так же, если std::string
был std::wstring
или std::u32string
. Можно ли использовать здесь функцию шаблона? Я не очень хорошо знаком с шаблонами, а std::string
и std::wstring
являются самими шаблонами, что может быть проблемой.
template<class StdStringClass>
inline void removeOuterWhitespace(StdStringClass & strInOut)
{
const unsigned int uiBegin = strInOut.find_first_not_of(" \t\n");
if (uiBegin == StdStringClass::npos)
{
// the whole string is whitespace
strInOut.clear();
return;
}
const unsigned int uiEnd = strInOut.find_last_not_of(" \t\n");
strInOut = strInOut.substr(uiBegin, uiEnd - uiBegin + 1);
}
Это правильный способ сделать это? Есть ли подводные камни с этой идеей. Я не говорю об этой функции, а об общей концепции использования шаблонного класса StdStringClass
и вызова обычных std::string
функций, таких как find, replace, erase и т.д.