社区
C++ Builder
帖子详情
分割字符串问题
stbigcrab
2006-09-26 03:52:56
请教下各位前辈
下面类似的字符串如何分割?
'1' '2' '3' '4'
我想把1,2,3,4提取出来,但是小弟水平不够,请各位指教
...全文
198
11
打赏
收藏
分割字符串问题
请教下各位前辈 下面类似的字符串如何分割? '1' '2' '3' '4' 我想把1,2,3,4提取出来,但是小弟水平不够,请各位指教
复制链接
扫一扫
分享
举报
写回复
配置赞助广告
用AI写文章
11 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
stbigcrab
2006-09-26
打赏
举报
回复
keiy确实正解
xyz_789也正确
谢谢大家
其他代码就没有测试过,回头再努力研究大家的代码
谢谢各位的热心!
mozart007
2006-09-26
打赏
举报
回复
比如你得到待拆的数组是 xxxx
char *rip_char; //存放要拆的每一个数字
int ripped_number=0; //存放拆出了几个数
rip_char = (char *) malloc( strlen(xxxx) );
for (int i=0; i<strlen(xxxx);i++) //遍历每一个char,是数字的就提出来,楼主要的这样吗?
{if( (xxxx[i]>='0')&&(xxxx[i]<='9') || (xxxx[i]>='A')&&(xxxx[i]<='Z') || (xxxx[i]>='a')&&(xxxx[i]<='z') )
{rip_char[ripped_number]=xxxx[i];
ripped_number++;
}
}
//这样就可以,rip_char[ripped_number] 记录每个提出的字符
柯本
2006-09-26
打赏
举报
回复
用BCB的TRegexp 更灵活些:
#include <regexp.h>
...
void __fastcall TForm1::Button1Click(TObject *Sender)
{
TRegexp *p=new TRegexp("[^ ']+");
char x[]="'A' '1' '2' 'B'";
int s;
unsigned int l;
s=l=0;
char buff[10];
while(1)
{
s=p->find(x,&l,s+l);
if (s==-1)
break;
strncpy(buff,x+s,l);
buff[l]=0;
Memo1->Lines->Add(buff);
}
}
更复杂的,可用boost的正则表达式库,什么都能做了
柯本
2006-09-26
打赏
举报
回复
AnsiString Str="'A' '1' '2' 'B'";
TStringList *t=new TStringList();
t->Delimiter='\'';
t->DelimitedText=Str;
for (int i=0;i<t->Count;i++)
if (t->Strings[i]!="")
Memo1->Lines->Add(t->Strings[i]);
delete t;
//结果在Memo1->Lines->Sttring[0..3]中,分别为A 1 2 B
stbigcrab
2006-09-26
打赏
举报
回复
是这样的
有一串字符
AnsiString Str="'A' '1' '2' 'B'";
要求的是把
A
1
2
B
独立提取出来作为字符串。
stbigcrab
2006-09-26
打赏
举报
回复
爆寒,刷新一下这么多人回复..
小弟马上测试.
wood542344
2006-09-26
打赏
举报
回复
楼上正解。。
柯本
2006-09-26
打赏
举报
回复
多种方法,但用TStringList的DelimitedText最方便
TStringList *t=new TStringList();
t->Delimiter='\'';
t->DelimitedText="'1' '2' '3' '4'";
int m[4];
int j=0;
for (int i=0;i<t->Count;i++)
if (t->Strings[i]!="")
m[j++]=StrToInt(t->Strings[i]);
delete t;
结果:
//m[0]=1,m[1]=2,m[2]=3,m[3]=4
xyz_789
2006-09-26
打赏
举报
回复
AnsiString k,Str;
k = "'1''2''3''4'";
while(k.Pos("''")!=0)
{
Str = k.SubString(2,1);
Memo1->Lines->Add(Str);
k = k.Delete(1,3);
}
Str = k.SubString(2,1);
Memo1->Lines->Add(Str);
mozart007
2006-09-26
打赏
举报
回复
比如你得到待拆的数组是 xxxx
char *rip_char; //存放要拆的每一个数字
int ripped_number=0; //存放拆出了几个数
rip_char = (char *) malloc( strlen(xxxx) );
for (int i=0; i<strlen(xxxx);i++) //遍历每一个char,是数字的就提出来,楼主要的这样吗?
{if{ (xxxx[i]>='0')||(xxxx[i]<='9')
{rip_rip_char[ripped_number]=xxxx[i];
ripped_number++;
}
}
BlueDeepOcean
2006-09-26
打赏
举报
回复
楼主说的不是很清楚,你的字符串到底是什么样子的?
如果单纯地“1234”分割为“1”、“2”、“3”和“4”的话,则可采用SubString的方式,否则的话,处理方法可能不同。
以“1234”为例:
AnsiString O,T,Tr,F,As;
As = "1234";
O = As.SubString(1,1);
T = As.SubString(2,1);
Tr = As.SubString(3,1);
F = As.SubString(4,1);
浅谈Ceph纠删码
CEPH纠删码原理和应用
ceph 纠删码解读和实践
原理介绍 原理我们就直接引用网上一篇文章: 参考:Ceph的正确玩法之Ceph纠删码理论与实践 纠删码(Erasure Coding,EC)是一种编码容错技术,最早是在通信行业解决部分数据在传输中的损耗
问题
。其基本原理就是把传输的信号分段,加入一定的校验再让各段间发生相互关联,即使在传输过程中丢失部分信号,接收端仍然能通过算法将完整的信息计算出来。在数据存储中,纠删码将数据
分割
成片段,把冗余数据块扩展和编码,并将其存储在不同的位置,比如磁盘、存储节点或者其他地理位置。如果需要严格区分,实际上按照误码控制的不
ceph中纠删码如何读写数据
在介绍纠删码读写之前,我们先看下ceph处理IO的流程,借鉴别人提供的图片如下: 从该图我们可以看到从前端的业务文件到数据保存到存储硬盘上的过程,步骤如下: 1. File->Object映射 RADOS中需要配置object的大小,一般会设置为2M到4M的大小。当用户写入数据文件时,首先会根据object的大小值将file进行切分。如果file的大小不足object的大小,则直接按照原大小映射到一个object中;如果file的大小大于object大小,则file会被切分若干个完整大小的.
Ceph中纠删码的读写过程与缓存分层
之前一直在关注Ceph读写过程与修复,现将之前看到的内容记录下来。欢迎探讨。 读写过程 上图大体可以表示从文件到保存在存储实体上的过程,详细步骤如下: 1. RADOS中需要配置Object Size的值,也就是每个Object大小的最大值,一般情况下会设置为2M到4M。当一个file存进ceph中时,会根据Object Size将file进行切分。若file的
【ceph的通用解决方案】-ceph纠删码理论与实践
作者:【吴业亮】 博客:https://wuyeliang.blog.csdn.net/ 开篇: 目前企业的业务场景多种多样,并非所有Ceph存储解决方案都是相同的,了解工作负载和容量要求对于设Ceph解决方案至关重要。Ceph可帮助企业通过统一的分布式集群提供对象存储、块存储或文件系统存储。在设计流程中,这些集群解决方案针对每项要求都进行了优化。该设计流程的首要因素包括 IOPS 或带宽要求、存...
C++ Builder
13,871
社区成员
102,696
社区内容
发帖
与我相关
我的任务
C++ Builder
C++ Builder相关内容讨论区
复制链接
扫一扫
分享
社区描述
C++ Builder相关内容讨论区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章