您的位置:首页 > 编程语言 > C语言/C++

C++之字符串常用操作类集合

2015-11-25 14:37 453 查看
## 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;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: