我想找一个类似于java中split那样的函数,支持C++字符串分割

jackxiang 2010-11-18 23:39 | |
我想找一个类似于java中split那样的函数,支持C++字符串分割
比如
aabe(bbb)iefjij(bbb)(bbb)
用(bbb)分割得到
aabe
iefjij
fjdkfji

注:不用CString


今天用c++写了个分割字符串的函数,老是内存报错。在网上搜搜发现c的一个函数就可以搞定。

汗啊

c++

==========



#include "stdafx.h"

#include <windows.h>
//查找字符串中的制定字符,并返回字符的位置
int strstrFindPos(char srcstr[],char deststr[] )
{
int j=0;
for (int i=0;srcstr[i]!='\0';i++)
{
   if (deststr[0]==srcstr[i])
   {
    while (deststr[j]!='\0'&&srcstr[i+j]!='\0')
    {
     j++;
     if (deststr[j]!=srcstr[i+j])
     {
      break;
     }
    }
   }
        if (deststr[j]=='\0')
   {
    return i;
   }
}
return -1;
}
//截取字符串中的位置1到位置2的字符串
char* substr(char *des, char *src, int start, int end)  
{
int i =0;
while(*src   !=   '\0')
{
   if((i >= start)&&(i<=end))  
   {
    *des= *src; //[*]
    des++;
   };
   i++;
   src++;
};
*des= '\0';
return des;
}


int main(int argc, char* argv[])

{
   char *cCode = "XXXXXX000000000000000000000001XXXXXX1111111111111111111111111112XXXXXX2222222222222222222223XXXXXX";
char *cAllCode = new char[];
char *cTempCode = new char[];
char *cNeedCode= new char[];
char *cOnlyCode ="XXXXXX";
char *cMyData = NULL;
int iPos = -1;
   if ( cCode != NULL)
{
   strcpy(cAllCode,cCode);

}


do{
   substr(cTempCode, cAllCode,6,lstrlen(cAllCode));
   iPos = strstrFindPos(cTempCode,cOnlyCode);
   if (iPos > -1)
   {
    substr(cNeedCode,cTempCode,0,iPos -1);
    printf("cNeedCode : %s \n" , cNeedCode);
    substr(cAllCode, cTempCode,iPos,lstrlen(cTempCode));
   }
}while (iPos > -1);

//    delete cTempCode;
//    delete cNeedCode;

delete cAllCode;


   return 0;

}

find实现方法:函数参数类型:int =sting.find(string);
#include <iostream>
#include <string.h>
using namespace std;
int main()
{
        string a = "aaaAlice";
        int pos = a.find("Alice");//pos = 3;
        printf("%d\n",pos);
}


c++ substr的用法问题:

我的代码是这样的:
#include <iostream>
#include<string>
using namespace std;
void main()
{
string a;
getline(cin,a);
cout<<a.length()<<endl;

cout<<a.substr(1,1);
}
输出结果为输入的第二个字符,我很好奇substr中的两个参数是怎么截取中间部分的,还有这个函数的起始字符是用0来表示么?
最佳答案
下面给出解释:
substr 方法
  返回一个从指定位置开始,并具有指定长度的子字符串。
  参数
  start
  必选。所需的子字符串的起始位置。字符串中第一个字符的索引为 0。
  length
  可选项。返回的子字符串中包含的字符数。
  备注
  如果 length 为 0 或负数,将返回一个空字符串。如果没有指定该参数,则子字符串将延续到字符串的结尾。
看了上面这些应该就会明白了!!
来源:http://group.gimoo.net/review/60574

作者:jackxiang@向东博客 专注WEB应用 构架之美 --- 构架之美,在于尽态极妍 | 应用之美,在于药到病除
地址:http://jackxiang.com/post/3760/
版权所有。转载时必须以链接形式注明作者和原始出处及本声明!


最后编辑: jackxiang 编辑于2010-11-21 14:11
评论列表
发表评论

昵称

网址

电邮

打开HTML 打开UBB 打开表情 隐藏 记住我 [登入] [注册]