字符串处理和排序

 #include <iostream>// 数据流输入/输出

#include<string>// 字符串类

#include<algorithm>// STL 通用算法

#include<vector>// STL 动态数组容器

#include<stdlib.h>#include<stdio.h>

#include<string.h>#include<ctype.h>

#define TOKEN '-'usingnamespace std;

bool strsize(conststring& i,const string& j);

char* Extraction_sequence(constchar* src,char* des);

int main(){char output[100];

Extraction_sequence("ad2e99f35a0dx1we5465d修正465465w000e76", output);

printf("%s\n", output);return 0;}

bool strsize(conststring& i,const string& j)

{if (i.size()== j.size()) {return (i < j); }

return (i.size()< j.size());}

char* Extraction_sequence(constchar* src,char* des){char* ret= des; // 返回指针

char* buf= newchar[strlen(src)+ 1];// 缓冲buf

char* c_buf= buf; // 提取字符串中的数字

while (*src) {if (isdigit(*src)) {*c_buf++= *src;if (!isdigit(*(src+ 1)))// 数字后面添加 分割标记

*c_buf++= TOKEN ; } src++; }*(c_buf - 1)= '\0';// 封闭字符串/* 排序数字序列*/

vector<string> seq;

vector<string>::iterator iter;char* pch; pch= strtok(buf,"-");

while (pch != NULL)

{

 seq.push_back(pch);//2 35 1 76 置入到容器里

pch= strtok(NULL,"-");

}

sort(seq.begin(), seq.end(), strsize);//按数字长度和大小排列

iter= seq.begin(); des[0]= '\0';// des 清零

while (iter!= seq.end()) { strcat(des, (iter++)->c_str()) ;

strcat(des, "-") ; }

des[strlen(des)- 1]= '\0';// des 消除最后的 标记'-'

delete[] buf;return ret;}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值