00001 #include "stdafx.h"
00002 #include "token.h"
00003
00004 void Tokenizer::split( const std::string& source, const std::string& delimiter, std::vector< std::string> & result)
00005 {
00006 if ( delimiter.length() <= 0) return;
00007 std::string::size_type curr_token_start = 0;
00008 std::string::size_type curr_token_end = source.find( delimiter, curr_token_start);
00009
00010 while ( curr_token_end != std::string::npos)
00011 {
00012 if ( curr_token_end - curr_token_start > 0)
00013 result.push_back( source.substr( curr_token_start, curr_token_end - curr_token_start));
00014 curr_token_start = curr_token_end + delimiter.length();
00015 curr_token_end = source.find( delimiter, curr_token_start);
00016 }
00017
00018 if ( curr_token_end == std::string::npos && source.length() - curr_token_start > 0 )
00019 result.push_back( source.substr( curr_token_start, source.length() - curr_token_start));
00020
00021 }
00022
00023
00024 void Tokenizer::trimLeft( std::string& s)
00025 {
00026 if ( s.empty()) return;
00027 int i = 0;
00028 while( i < (int) s.length() &&
00029 ( s[i] == _T(' ')
00030 || s[i] == _T('\t')
00031 || s[i] == _T('\n')))
00032 ++i;
00033
00034 s.erase(0, i);
00035 }
00036
00037
00038 void Tokenizer::trimRight( std::string& s)
00039 {
00040 if ( s.empty()) return;
00041 int i = (int) s.length() - 1;
00042 while( i >= 0 &&
00043 ( s[i] == _T(' ')
00044 || s[i] == _T('\t')
00045 || s[i] == _T('\n')))
00046 --i;
00047
00048 s.erase(i + 1, s.length() - i - 1);
00049 }
00050
00051
00052 void Tokenizer::removeWSP( std::string& s)
00053 {
00054 if ( s.empty()) return;
00055 std::string r;
00056 for( int i = 0; i < (int) s.length(); ++i)
00057 if ( s[i] != _T(' ')
00058 && s[i] != _T('\t')
00059 && s[i] != _T('\n'))
00060 r += s[i];
00061 s = r;
00062 }