C/C++文字を分割して文字配列インスタンスを返す


C/C++文字を分割して文字配列インスタンスを返す
//           
char **GetStrArray(char* s,const char* d)
{		
    char* s_s=new char[strlen(s)];
	strcpy(s_s,s);
	//        
	int rows=0;
    char *p_str=strtok(s_s,d);
	while(p_str) 
    { 	
		rows+=1;
        p_str=strtok(NULL,d); 
	} 
	//        
	char **strArray=new char*[rows+1];
	for(int i=0;i<rows;i++)
	{
        strArray[i]=NULL;
	}	
	strArray[0]=i2cp(rows);  //     
	//
	int index=1;
	s_s=new char[strlen(s)];
	strcpy(s_s,s);
    p_str=strtok(s_s,d);
	while(p_str) 
    { 			
        char* s_p=new char[strlen(p_str)];
	    strcpy(s_p,p_str);
		//        
        strArray[index]=s_p;
		//
		index+=1;
        p_str=strtok(NULL,d); 
	}	
	return strArray;
}
使い方1:
char* f_ext="cun_xzdw.wl"; char **strArray=GetStrArray(f_ext,"."); int tlen=atoi(strArray[0]); ShowMsg(strArray[1]);//取得したcun_を表すxzdw文字列
使用法2:
//           
char* getfilenameNoExt_lc(char* s,const char* d)
{     
	//          
	 char** strArray;
	 char* t_f_ext=NULL;
	 strArray=GetStrArray(s,"\\");
	 int t_len=atoi(strArray[0]);
	 t_f_ext=strArray[t_len];
    //           
	 char* t_fname=NULL;	 			
	 strArray=GetStrArray(t_f_ext,".");
	 int arraylen=atoi(strArray[0]);
	 if(arraylen>=2)
	 {
	    t_fname=strArray[1];
	 }
	 return t_fname;
}
char* Lfilename="d:\\cun_xzdw.wl";
char* t_fname=getfilenameNoExt_lc(Lfilename,"\\");
//t_fname="cun_xzdw";
---the--end--
---vp:hsg
---create date:2012-04-19--