c/c++ splitting string class

/*
 file: test.cpp

 test file for this class
*/

#include <stdio.h>
#include "functions.hpp"

int main(){

 Functions* spliting = new Functions();
 char*  text = "ab|fgh|xxx";
 char**  splitted = 0;

 splitted = spliting->splitChar(text, '|');

 printf("Text before splitting: %s/n", text);
 printf("Text after splitting by |:/n");
 for(int i=0; i<spliting->getSplitSize(); i++){
  printf("%s/n", splitted[i]);
 }

windows下用DOS编译就行, >cl functions.cpp test.cpp >link functions.obj test.obj

 splitted = 0;

 delete(spliting);
 delete(splitted);
 
 return(0);
}

/*
 file: Functions.hpp
*/

#ifndef FUNCTIONS_HPP
#define FUNCTIONS_HPP


class Functions{

public:
 Functions();
 ~Functions();
 char** splitChar(char*, char);
 int getSplitSize();

private:
 int  _splitSize;

};

#endif

// Functions.cpp: implementation of the Pareto class.
//
//

#include<time.h>
#include<math.h>
#include<stdlib.h>
#include<stdio.h>
#include<string.h>

#include "functions.hpp"


#define uint unsigned int

//
// Construction/Destruction
//

Functions::Functions():
 _splitSize(0){

}

Functions::~Functions(){

}

char** Functions::splitChar(char* linea, char divider){
 
 uint i = 0;
 uint count = 0;
 int count2 = 0;
 int j=0;

 uint a = strlen(linea);
 printf("size of text = %d/n", a);
 for(i= 0 ; i< (a); i++){
  if(linea[i]==10||linea[i]==13)
   linea[i]='/0';
 }


 for(i=0; i<strlen(linea); i++){
  if(linea[i]==divider)
  {
   count++;
  }
 }
 
 printf("count = %d/n", count);
 _splitSize = count+1;
 printf("_splitSize = %d/n", _splitSize);

 char** theReturn = new char*[count+1];
 
 for(i=0; i<count+1; i++){
  theReturn[i] = new char[10];
 }

 for(i=0; i<strlen(linea)+1; i++)
 {
  printf("text[%d]=%c/n", i, linea[i]);
  if(linea[i]==divider||linea[i]=='/0')
  {
   theReturn[count2][j] = '/0';
   printf("**** linea = divider | or end code ......./n");
   j=0;
   count2++;
  } else
  {
   theReturn[count2][j++] = linea[i];
   printf("theReturn[%d]=%c/n", count2, theReturn[count2]);
  }
 }
 for(int ireturn=0; ireturn<_splitSize; ireturn++)
  printf("%s/n", theReturn[ireturn]); 
 return(theReturn);
}

int Functions::getSplitSize(){
 return(_splitSize);
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值