C++对带有分隔符的字符串 分割为数字的通用解决方案
你看到的这个文章来自于http://www.cnblogs.com/ayanmw
需求:
数据库取出的字段类似于 "1,3,4"
然后用数字处理后,,比如 "1,2,3" 再存回去
#include<stdio.h> #include<string.h> class MyStr{ public: //根据 "1,2,3" 获得数字数组 static int *split(char * str,const char *split,const int count){ if(strlen(str)==0 || strlen(split)==0) return NULL; if(count <=1) return NULL; int * ints=new int[count]; memset(ints,0x0,count*sizeof(int)); char split_str[48]; int index_length=0; snprintf(split_str,48,"%%d%s",split); for (int i=0;i<count;i++){ sscanf(str+index_length,split_str,&ints[i]); char num_str[20]={0}; sprintf(num_str,"%d",ints[i]); index_length+=strlen(num_str)+strlen(split); } return ints; } //根据数字数组 组合为字符串 static char * bindNumbersToStr(int * nums,const unsigned int nums_length,const char * split){ char * str=new char[1025]; char num_str[20]={0}; int index_length=0; for(int i=0;i<nums_length;i++){ sprintf(str+index_length,"%d%s",nums[i],split); index_length=strlen(str); } str[index_length-strlen(split)]=0x0; return str; } }; int main(){ char str[]="1,3,5,7,9"; int * ints=MyStr::split(str,",",5); for(int i=0;i<5;i++){ printf("ints[%d]=%d\n",i,ints[i]); } char * s=MyStr::bindNumbersToStr(ints,5,";"); printf("s=%s\n",s); delete s; delete ints; return 0; }
运行结果:
ints[0]=1
ints[1]=3
ints[2]=5
ints[3]=7
ints[4]=9
s=1;3;5;7;9
如预期所料
当然还可以进一步完善。
百度下,别人的方案:
http://zhidao.baidu.com/question/348273815.html
http://hi.baidu.com/hwygy_001/item/a073ff0d3eb743e4fe240d3b
http://www.cnblogs.com/huashanlin/archive/2011/04/25/2028597.html
转载请注明出处:http://www.cnblogs.com/ayanmw 我会很高兴的!
------------------------------------------------------------------------------------------------
一定要专业!本博客定位于 ,C语言,C++语言,Java语言,Android开发和少量的Web开发,之前是做Web开发的,其实就是ASP维护,发现EasyASP这个好框架,对前端后端数据库 都很感觉亲切啊。. linux,总之后台开发多一点。以后也愿意学习 cocos2d-x 游戏客户端的开发。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!