Giriş
Eğer kendi algoritmamızı yazıyorsak template şeklinde kodlamaya dikkat etmek gerekir. Parametremiz std::basic_string olmalı. Template olarak char, wchar kullanılabilir.
Trim string'in sağındaki ve solundaki boşlukları siler.
Eğer kendi algoritmamızı yazıyorsak template şeklinde kodlamaya dikkat etmek gerekir. Parametremiz std::basic_string olmalı. Template olarak char, wchar kullanılabilir.
template<class T>
inline void myalgorithm(std::basic_string<T>& strInOut)
{...}
TrimTrim string'in sağındaki ve solundaki boşlukları siler.
template<class TString>
static inline TString &trim_left(TString &s)
{
s.erase(std::begin(s), std::find_if(std::begin(s), std::end(s),
std::not1(std::ptr_fun<int, int>(std::isspace))));
return s;
}
template<class TString>
static inline TString &trim_right(TString &s)
{
s.erase(std::find_if(s.rbegin(), s.rend(),
std::not1(std::ptr_fun<int, int>(std::isspace))).base(), std::end(s));
return s;
}
template<class TString>
static inline TString &trim(TString &s)
{
return trim_left(trim_right(s));
}
Trim Right şöyle yazılabilir.template<class T>
inline void removeOuterWhitespace(std::basic_string<T>& strInOut)
{
constexpr auto delim[] = {T(' '),T('\t'),T('\n'),T(0)};
const auto uiBegin = strInOut.find_first_not_of(delim);
if (uiBegin == std::basic_string<T>::npos)
{
// the whole string is whitespace
strInOut.clear();
return;
}
const auto uiEnd = strInOut.find_last_not_of(delim);
strInOut = strInOut.substr(uiBegin, uiEnd - uiBegin + 1);
}
Hiç yorum yok:
Yorum Gönder