## Linux C++中用于字符串操作的工具类
## cstringutils.h
#ifndef CSTRINGUTILS_H
#define CSTRINGUTILS_H
#include <vector>
#include <string>
#include <iostream>
#include <map>
#include <set>
#include "typedef.h"
using namespace std;
class CStringUtils
{
public:
static INT32 split(const string & str,vector<string>& ret_,string sep);
static INT32 getXmlNodeValue(const string src ,const string key ,string & value);
static string toString(int n);
static INT32 StringToINT32(string str);
};
#endif // CSTRINGUTILS_H
## cstringutils.cpp
/***************************************************************************************************
* @HISTORY
*
*
*
*
*
*
* ************************************************************************************************/
#include "cstringutils.h"
#include <stdlib.h>
#include <strstream>
/**************************************************************************************************
* split string to stringList.
*************************************************************************************************/
INT32 CStringUtils::split(const string &str, vector<string> &ret_, string sep){
if (str.empty())
return 0;
string tmp;
string::size_type pos_begin = str.find_first_not_of(sep);
string::size_type comma_pos = 0;
while (pos_begin != string::npos)
{
comma_pos = str.find(sep, pos_begin);
if (comma_pos != string::npos)
{
tmp = str.substr(pos_begin, comma_pos - pos_begin);
pos_begin = comma_pos + sep.length();
}
else
{
tmp = str.substr(pos_begin);
pos_begin = comma_pos;
}
if (!tmp.empty())
{
ret_.push_back(tmp);
tmp.clear();
}
}
return 0;
}
/**************************************************************************************************
* get Xml node`s value from string.
*************************************************************************************************/
INT32 CStringUtils::getXmlNodeValue(const string src ,const string key ,string & value){
string sNode = "<" + key + ">";
string eNode = "</" + key + ">";
int begin = src.find(sNode ,0);
if (string::npos == begin){
return -1;
}
int end = src.find(eNode ,begin);
if (string::npos == end){
return -1;
}
value = src.substr(begin + sNode.length() , end - begin - sNode.length());
return 1;
}
/**************************************************************************************************
* Convert INT to String.
*************************************************************************************************/
string CStringUtils::toString(int n){
strstream m;
m<<n;
string s;
m>>s;
return s;
}
/**************************************************************************************************
* Convert String to INT32
*************************************************************************************************/
INT32 CStringUtils::StringToINT32(string str){
strstream m;
m<<str;
INT32 n;
m>>n;
return n;
}