字串切割成個數問題 |
答題得分者是:alvinken
|
small7011
一般會員 發表:19 回覆:34 積分:10 註冊:2007-07-24 發送簡訊給我 |
我有一個String為"18/30 31/40 41/50 " 我想將18 30 31 40 41 50 六個整數依照順序分別存在一個陣列裡面[0]~[5]的位置 我想到的方式是用strtok函數來使用,但是我不懂這函數的用法 所以是否可以請各位教教我該如何使用,或是有更棒的方式 [code cpp] char *cToken,*cNumToken; AnsiString asCut[65][10],asFinalCut[65][20]; int iCutCount1,iCutCount2; int ias1Length,iasPos; AnsiString asCutNumber; for(int a=0;a<65;a ){ if(asY_Coordinates[a].Length()==0){ continue; } else{ iCutCount1=0; cToken=strtok(asY_Coordinates[a].c_str()," "); while(cToken!= NULL){ asCut[a][iCutCount1]=cToken; iCutCount1 ; cToken=strtok(NULL," "); } iCutCount2=0; for(int x=0;x iasPos=asCut[a][x].AnsiPos('/'); if(iasPos==0){ ias1Length=asCut[a][x].Length(); asCutNumber=asCut[a][x].SubString(1,ias1Length); asCut[a][x]=asCut[a][x] "/" asCutNumber; } cNumToken=strtok(asCut[a][x].c_str(),"/"); while(cNumToken!= NULL){ asFinalCut[a][iCutCount2]=cNumToken; asFinalCut[a][iCutCount2]=asFinalCut[a][iCutCount2].TrimRight(); iCutCount2 ; cNumToken=strtok(NULL," "); } } } } [/code] 這問題我已經自行解決了,但各位大大如有好建議也請告訴我,謝謝
------
lee |
alvinken
初階會員 發表:21 回覆:32 積分:45 註冊:2008-06-09 發送簡訊給我 |
你那中間是有空格嗎? <br \>
[code cpp] String Astring = "18/30 31/40...."; char *array[6]; array[0] = strtok(Astring ,"/" ) ; array[1] = strtok(NULL , " ") ; array[2] = strtok(NULL , "/"); 依此類推.... [/code] 大致上的寫法就是如此,應該看一下就知道了 ===================引 用 small7011 文 章=================== 我有一個String為"18/30 31/40 41/50 " 我想將18 30 31 40 41 50 六個整數依照順序分別存在一個陣列裡面[0]~[5]的位置 我想到的方式是用strtok函數來使用,但是我不懂這函數的用法 所以是否可以請各位教教我該如何使用,或是有更棒的方式
------
水至清則無魚,人至賤則無敵。 |
small7011
一般會員 發表:19 回覆:34 積分:10 註冊:2007-07-24 發送簡訊給我 |
|
jow
尊榮會員 發表:66 回覆:751 積分:1253 註冊:2002-03-13 發送簡訊給我 |
[code cpp] //--------------------------------------------------------------------------- void __fastcall TForm1::Button2Click(TObject *Sender) { String S = "18/30 31/40 41/50 ", T=""; int N[6], k=0; for(int i=1;i<=S.Length();i ) if(S[i]>='0'&&S[i]<='9')T =S[i]; else if(k<6&&T!=""){ ListBox1->Items->Add(T);//show token N[k ]=StrToInt(T); T=""; } } //--------------------------------------------------------------------------- [/code] |
hou0935
一般會員 發表:0 回覆:0 積分:0 註冊:2024-02-09 發送簡訊給我 |
另一個方法:使用 TStringList 與 DynamicArray
[code cpp] String s = "18/30 31/40 41/50 ";
[/code]TStringList *sList = new TStringList(); sList->Delimiter = '/'; // 設定要分割的字元 sList->StrictDelimiter = false; //false: 連續空白字元也是一個分割 sList->DelimitedText = s; DynamicArray < String > ar1; for(int i=0;iCount; i){ ar1.Length ; ar1[ar1.Length-1]=sList->Strings[i]; } delete sList; sList=nullptr;
------
David Hou |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |