C++之字符串常用操作类集合
2015-11-25 14:37
453 查看
## Linux C++中用于字符串操作的工具类
## cstringutils.h
## cstringutils.cpp
## 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; }
相关文章推荐
- C++结构体对齐
- c语言返回栈内存的问题
- c++ ftream
- C++ virtual关键字
- Effective C++ 笔记 第九部分 杂项讨论
- c++11 匿名函数支持
- std::initializer_list in C++0x
- C语言中函数调用中的传值与传址
- 经典排序算法(二)插入排序--C++实现
- 经典排序算法(一)冒泡法排序----C++实现
- c++中STL的使用总结
- typedef用法
- 一元多项式相加(无头结点,c++)
- C语言捕获键盘敲击的方法kbhit
- c++中的作用域
- C++ CUI库
- 迭代器作为函数参数传入时的注意事项
- C++中引用(&)的用法和应用实例
- c++ GUI库 游戏界面库
- 树的同构