You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
147 lines
3.2 KiB
147 lines
3.2 KiB
/**
|
|
* @file string_helper.cpp
|
|
* @brief string utility functions' implemention
|
|
* @author James
|
|
* @history
|
|
* ===================================================================================
|
|
* Date Name Description of Change
|
|
* 09-July-2008 James
|
|
* 14-Jau-2009 James modify Split functions, add trim blank characters
|
|
*/
|
|
#pragma warning(disable:4996)
|
|
//
|
|
//#include <stdio.h>
|
|
//#include <iostream>
|
|
//#include <windows.h>
|
|
#include "string_helper.h"
|
|
|
|
string TrimString( string strArg )
|
|
{
|
|
size_t index1 = 0;
|
|
index1 = strArg.find_first_not_of( ' ');
|
|
if( index1 != string::npos )
|
|
strArg.erase( strArg.begin(), strArg.begin()+index1 );
|
|
index1 = strArg.find_last_not_of( ' ');
|
|
if( index1 != string::npos )
|
|
strArg.erase( strArg.begin() + index1 + 1 );
|
|
return strArg;
|
|
}
|
|
|
|
void Split( string strArg, char spliter, vector<string> &ans )
|
|
{
|
|
ans.clear();
|
|
size_t index0 = 0;
|
|
string one_arg;
|
|
if ( strArg.find_first_not_of(' ') == string.npos )
|
|
strArg = "";
|
|
while( strArg.size()>0 )
|
|
{
|
|
index0 = strArg.find_first_of( spliter );
|
|
if( index0 != string::npos )
|
|
{
|
|
one_arg = strArg.substr( 0,index0 );
|
|
strArg = strArg.substr( index0 + 1 );
|
|
ans.push_back( one_arg );
|
|
}
|
|
else
|
|
{
|
|
ans.push_back( strArg );
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
|
|
void Split( string strArg, string spliter, vector<string> &ans )
|
|
{
|
|
|
|
ans.clear();
|
|
|
|
size_t index0;
|
|
string one_arg;
|
|
|
|
if ( strArg.find_first_not_of(" ") == string::npos )
|
|
strArg = "";
|
|
|
|
|
|
while( strArg.size()>0 )
|
|
{
|
|
|
|
index0 = strArg.find(spliter);
|
|
|
|
if( index0 != string::npos )
|
|
{
|
|
|
|
one_arg = strArg.substr( 0, index0 );
|
|
strArg = strArg.substr( index0 + spliter.size() );
|
|
|
|
ans.push_back( one_arg );
|
|
}
|
|
else
|
|
{
|
|
|
|
ans.push_back( strArg );
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
void RemoveLiner( string &in, string &out )
|
|
{
|
|
char buf[BUFSIZ] = "";
|
|
for( int i=0; i<(int)in.size(); i++ )
|
|
{
|
|
if( in[i] == '\n')
|
|
continue;
|
|
else
|
|
sprintf( buf,"%s%c", buf, in[i] );
|
|
}
|
|
out.assign(buf);
|
|
}
|
|
|
|
////Converting a WChar string to a Ansi string
|
|
//std::string WChar2Ansi(LPCWSTR pwszSrc)
|
|
//{
|
|
// int nLen = WideCharToMultiByte(CP_ACP, 0, pwszSrc, -1, NULL, 0, NULL, NULL);
|
|
//
|
|
// if (nLen<= 0) return std::string("");
|
|
//
|
|
// char* pszDst = new char[nLen];
|
|
// if (NULL == pszDst) return std::string("");
|
|
//
|
|
// WideCharToMultiByte(CP_ACP, 0, pwszSrc, -1, pszDst, nLen, NULL, NULL);
|
|
// pszDst[nLen -1] = 0;
|
|
//
|
|
// std::string strTemp(pszDst);
|
|
// delete [] pszDst;
|
|
//
|
|
// return strTemp;
|
|
//}
|
|
//
|
|
//string ws2s(wstring& inputws){ return WChar2Ansi(inputws.c_str()); }
|
|
//
|
|
////Converting a Ansi string to WChar string
|
|
//std::wstring Ansi2WChar(LPCSTR pszSrc, int nLen)
|
|
//{
|
|
// int nSize = MultiByteToWideChar(CP_ACP, 0, (LPCSTR)pszSrc, nLen, 0, 0);
|
|
// if(nSize <= 0) return NULL;
|
|
//
|
|
// WCHAR *pwszDst = new WCHAR[nSize+1];
|
|
// if( NULL == pwszDst) return NULL;
|
|
//
|
|
// MultiByteToWideChar(CP_ACP, 0,(LPCSTR)pszSrc, nLen, pwszDst, nSize);
|
|
// pwszDst[nSize] = 0;
|
|
//
|
|
// if( pwszDst[0] == 0xFEFF) // skip Oxfeff
|
|
// for(int i = 0; i < nSize; i ++)
|
|
// pwszDst[i] = pwszDst[i+1];
|
|
//
|
|
// wstring wcharString(pwszDst);
|
|
// delete pwszDst;
|
|
//
|
|
// return wcharString;
|
|
//}
|
|
//
|
|
//std::wstring s2ws(const string& s){ return Ansi2WChar(s.c_str(),s.size());}
|
|
|