有一个字符串,x,x,x,x,x x表示一个数据,如26,568,472,34,555 如何把这个五个数读出来?放在一个数组里!谢谢

amwn 2003-08-26 10:06:52
有一个字符串,x,x,x,x,x x表示一个数据,如26,568,472,34,555 如何把这个五个数读出来?放在一个数组里!谢谢
...全文
47 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
free1949 2003-08-26
  • 打赏
  • 举报
回复
Dala()的代码有问题:
其中的j值不会改变,永远指向第一个“,”的位置。
//下面是我的:
int a[MAX];
AnsiString S = "26,568,472,34,555";
AnsiString temp("");
int Pos=S.Pos(",");
int1=0;
while(Pos!=0)
{
temp=S.SubString(1,Pos-1);
a[i]=temp.ToInt();
i++;
S.Delete(1,Pos);
Pos=S.Pos(",");
}
风-君子 2003-08-26
  • 打赏
  • 举报
回复
AnsiString S = "26,568,472,34,555";
int Pos,val;
while(S != ""){
Pos = S.Pos(",");
if(Pos == 0)
{
val = s.ToInt();
S ="";
}
else
{
val = S.SubString(1,Pos - 1).ToInt();
S = S.SubString(Pos + 1,S.Length() - Pos);
}
};
Dala 2003-08-26
  • 打赏
  • 举报
回复
AnsiString S = "26,568,472,34,555";
int i=1, j, val;
while(j=S.AnsiPos(",")){
val = S.SubString(i,j-i).ToInt();
// val是你要的数,可以取出放在你的数组里。
i = j+1;
};
ghwhz 2003-08-26
  • 打赏
  • 举报
回复
我想应该做一个循环就读出来了
HeLZ 2003-08-26
  • 打赏
  • 举报
回复
结了,也要拿分来了。
AnsiString ansi = "2,454,5265,312,3343,983";
TStringList *strl = NULL;
try
{
strl = new TStringList();
strl->CommaText = ansi;
ShowMessage(strl->Text);
}
__finally
{
if (strl != NULL)
{
delete strl;
strl = NULL;
}
}
sun_wyz 2003-08-26
  • 打赏
  • 举报
回复
靠,结贴啦:(
刚2分钟!!
sun_wyz 2003-08-26
  • 打赏
  • 举报
回复
试试偶的吧,呵呵
AnsiString S = "26,568,472,34,555";

TSysCharSet j,k;
j<<',';
k<<'n';
TStringList *p= new TStringList;
ExtractStrings(j,k,s.c_str(),p);

int h=StrToInt(p->Strings[0]); // 26
int m=StrToInt(p->Strings[1]); // 568
int s=StrToInt(p->Strings[2]); // 472
.
.
.
.
剩下的自己写吧,然后放到数组里
amwn 2003-08-26
  • 打赏
  • 举报
回复
GaoLun(★米老鼠★) 方法可行, free1949(大白菜,小胡子) 的方法假如26,568,472,34,555 还有一个逗号也可行。
amwn 2003-08-26
  • 打赏
  • 举报
回复
这里程序都有一些问题!帮忙!
qiuafa 2003-08-26
  • 打赏
  • 举报
回复
接风,上!
gk0205 2003-08-26
  • 打赏
  • 举报
回复
char *str="26,568,472,34,555";
char *psub;
psub=strtok(str,',');
while(psub)
{
...
psub=strtok(NULL,',');
}
gallardo 2003-08-26
  • 打赏
  • 举报
回复
標準C庫函數:strtok()
lvjack 2003-08-26
  • 打赏
  • 举报
回复
同意GaoLun(★米老鼠★)

我曾经看到的另一种方法

实现split
//用标准库的vector和string


#include <vector>
#include <string>
#include <iostream>
using namespace std;

vector<string> *split(string& sLine, char flag)
{
vector<string> *psvect=new vector<string>;//string数组的指针

string::size_type pos=0,prev_pos=0;
while( (pos=sLine.find_first_of(flag,pos))!=string::npos)
{
psvect->push_back(sLine.substr(prev_pos,pos-prev_pos));
prev_pos = ++pos;
}

psvect->push_back(sLine.substr(prev_pos,pos-prev_pos));//处理最后一段


return psvect;

}


int main(int argc, char* argv[])
{
string s="2003-7-1";
vector<string> *psvect; //string数组的指针
psvect=split(s,'-');
for( unsigned int i=0; i<psvect->size(); i++)
{
cout<< (*psvect)[i]<<endl;
}
delete psvect;
cin.get();
return 0;
}
//---------------------------------------------------------------------------

GaoLun 2003-08-26
  • 打赏
  • 举报
回复
void __fastcall TForm1::Button1Click(TObject *Sender)
{
TStringList *Strs= new TStringList;
Strs->Delimiter = ';';
Strs->DelimitedText = "123;34;33;45;56"
ShowMessage(IntToStr(Strs->Count));
for (int i=0;i<Strs->Count;i++)
{
p[i]=Strs->Strings[i];
}
}
改一下 就可以了!~
yhz 2003-08-26
  • 打赏
  • 举报
回复
你试试看:
char Test[]="26,568,472,34,555";
int a, b, c, d, e;
sscanf(Test, "%d,%d,%d,%d,%d", &a, &b, &c, &d, &e);

13,825

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder相关内容讨论区
社区管理员
  • 基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧