基于std::string的字符串处理
来源:互联网 发布:h网络是什么意思 编辑:程序博客网 时间:2024/06/08 02:46
/********************************************************************************************** 文件:StringLib* 功能:基于的std::string实现的常用字符串操作,字符串分割,替换等* 作者:张晓东* 时间:2012-11-19* 修改:2012-11-19完成初步版本,实现:字符串分割,字符串替换,提取文件路径,文件名字,文件扩展名*********************************************************************************************/
#ifndef _StringLib_h#define _StringLib_h
#include <string>using namespace std;
#ifdef _cplusplusextern "C" {#endif
//从字符串str中,使用pattern进行分割,并存储到strVec中boolStringSplit(std::string src, std::string pattern, std::vector<std::string>& strVec){ std::string::size_type pos; src +=pattern;//扩展字符串以方便操作 int size=src.size(); for(int i=0; i<size; i++) { pos = src.find(pattern,i); if(pos<size) { std::string s=src.substr(i,pos-i); strVec.push_back(s); i=pos+pattern.size()-1; } }
return true;}
//将字符串str中的所有target字符串替换为replacementbool StringReplace(std::string& src, std::string target, std::string replacement){ std::string::size_type startpos = 0; while (startpos!= std::string::npos) { startpos = src.find(target); //找到'.'的位置 if( startpos != std::string::npos ) //std::string::npos表示没有找到该字符 { src.replace(startpos,1,replacement); //实施替换,注意后面一定要用""引起来,表示字符串 } }
return true;}
//提取路径中的文件名字(带路径,不带扩展名)//substr字符串中,第一个参数为截取的位置,第二个为截取的长度std::stringStringGetFullFileName(std::string path){ return path.substr(0, path.rfind('.') == std::string::npos ? path.length() : path.rfind('.') );}
//提取路径中的文件名字std::stringStringGetFileName(std::string path){ StringReplace(path, "/", "\\"); std::string::size_type startpos = path.rfind('\\') == std::string::npos ? path.length() : path.rfind('\\')+1; std::string::size_type endpos = path.rfind('.') == std::string::npos ? path.length() : path.rfind('.');
return path.substr(startpos, endpos-startpos);}
//提取路径中文件名字(带扩展名)std::stringStringGetFileNameWithExt(std::string path){ StringReplace(path, "/", "\\"); std::string::size_type startpos = path.rfind('\\') == std::string::npos ? path.length() : path.rfind('\\')+1; return path.substr(startpos);}
//提取路径中的文件路径std::stringStringGetDirectory(std::string path){ StringReplace(path, "/", "\\"); return path.substr(0, path.rfind('\\') == std::string::npos ? path.length() : path.rfind('\\') );}
//提取路径中的文件类型std::string StringGetFileExt(std::string path){ StringReplace(path, "/", "\\"); return path.substr(path.rfind('.') == std::string::npos ? path.length() : path.rfind('.')+1 );}
#ifdef _cplusplus}#endif
#endif
- 基于std::string的字符串处理
- 基于std::string的字符串处理
- 字符串替换函数 基于std::string
- std::string格式化字符串的问题
- std:string格式化字符串
- std::string字符串分割
- CString、std::string格式化字符串
- std::string 字符串大小写转换
- std::string是字符串吗?
- .std::string转utf8字符串
- C风格的字符串和std::string的比较
- std::string字符串中替换子串的函数
- 标准C++库字符串类std::string的用法
- std::string与CString字符串的相互转换
- 关于字符串指针初始化std::string的一个小问题
- C++ std::string和C字符串之间的问题
- c++的字符串string处理
- c++的字符串string处理
- Leetcode: Same Tree
- python 笔记
- 辛星浅谈大型网站架构思路之二分解
- 代码面试题:Subtree
- linux下的超级服务器inetd
- 基于std::string的字符串处理
- Clone Graph
- 绿洲游戏:非英文国家营销中国游戏
- ASPNET编码规范
- vector的内存分配机制
- 按键4级问答题考试
- sizeToFit的用法
- Hadoop-2.4.1配置问题
- UI 类与类之间的关系