博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C++ 使用STL string 实现的split,trim,replace-修订
阅读量:6854 次
发布时间:2019-06-26

本文共 2192 字,大约阅读时间需要 7 分钟。

更多精彩文章 

编辑器加载中...

使用python的时候默认str 对字符串操作支持非常丰富,相信每个C++程序员都自己写过string的strim、split、replace,

写个小工具函数,留着用,以前偷懒,写了好几次,这次总结一下,贴出来。

 

#include 
#include
using namespace std; namespace strtool {
string trim(const string& str) {
string::size_type pos = str.find_first_not_of(' '); if (pos == string::npos) {
return str; } string::size_type pos2 = str.find_last_not_of(' '); if (pos2 != string::npos) {
return str.substr(pos, pos2 - pos + 1); } return str.substr(pos); } int split(const string& str, vector
& 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; } string replace(const string& str, const string& src, const string& dest) {
string ret; string::size_type pos_begin = 0; string::size_type pos = str.find(src); while (pos != string::npos) {
cout <<"replacexxx:" << pos_begin <<" " << pos <<"\n"; ret.append(str.data() + pos_begin, pos - pos_begin); ret += dest; pos_begin = pos + 1; pos = str.find(src, pos_begin); } if (pos_begin < str.length()) {
ret.append(str.begin() + pos_begin, str.end()); } return ret; } } int main(int argc, char* argv[]) {
cout << strtool::trim(" nihao ") <<"\n"; vector
vt; strtool::split(",o h,,,nice,,,,,,,", vt); for (size_t i = 0; i < vt.size(); ++ i) {
cout <<"out:" << vt[i] <<"\n"; } string ret = strtool::replace("xxAxxxAxxAxx", "A", "B"); cout <<"replace:" << ret <<"\n"; return 0; } 更多精彩文章 

转载地址:http://kiyyl.baihongyu.com/

你可能感兴趣的文章
“常数变易法”有效的原理
查看>>
HTML5原生拖放事件的学习与实践
查看>>
论我国区块链技术的发展环境
查看>>
Kafka 消息格式中的变长字段(Varints)
查看>>
前端工程师成长之多读好书
查看>>
用CSS Grid Shepherd 技术对数据进行排序
查看>>
2019最新大厂面试算法真题解析
查看>>
深入理解js闭包
查看>>
还有什么等待:一对一直播开发+一对多,跨入全能APP时代
查看>>
发布项目到 jitpack io
查看>>
nextTick 在 vue 2.5 和 vue 2.6 之间有什么不同
查看>>
(十五)spring cloud微服务分布式云架构-commonservice-config配置服务搭建
查看>>
splice 循环删除元素
查看>>
vue单元测试vue test utils使用初探
查看>>
看promise教你如何优雅的写js异步代码
查看>>
Laravel——语言包
查看>>
Swift可选链式调用
查看>>
java B2B2C Springcloud电子商务平台源码-zuul 过滤器机制
查看>>
【更新】LEADTOOLS v20最新版发布(三)
查看>>
企业分布式微服务云SpringCloud SpringBoot mybatis -服务的注册与发现(Eureka)
查看>>