Nego, da ne ispadne kako samo zanovetam, evo levog i desnog trima u C++u. Ovo radi sa ma kojim character setom, uključujući i UNICODE.
Code:
#include <string>
#include <set>
#include <iostream>
using namespace std;
template <typename CharType>
void TrimLeft(basic_string<CharType>& str, const set <CharType>& spaceCharacters)
{
basic_string<CharType>::iterator it;
for (it = str.begin(); it != str.end(); ++it)
{
if (spaceCharacters.find(*it) == spaceCharacters.end())
{
str.erase(str.begin(), it);
return;
}
}
}
template <typename CharType>
void TrimRight(basic_string<CharType>& str, const set <CharType>& spaceCharacters)
{
basic_string<CharType>::iterator it;
for (it = str.end() - 1; it != str.begin(); --it)
{
if (spaceCharacters.find(*it) == spaceCharacters.end())
{
str.erase(it + 1, str.end());
return;
}
}
}
int main()
{
set<char> spaceChars;
spaceChars.insert (' ');
spaceChars.insert ('t');
string str(" abc ");
TrimLeft(str, spaceChars);
TrimRight(str, spaceChars);
cout << str;
}