我想取一串字符的中间,根据前后特征字,比如一个char = [~1]dddd[~2]
怎么取到dddd

解决方案 »

  1.   

    原型:extern char *strstr(char *haystack, char *needle);
      用法:#include <string.h> (经过多次试验,这个头文件也可以不包含,并不影响该函数的使用。既然MSDN上要求, 可以不妨带上)
      功能:从字符串haystack中寻找needle第一次出现的位置(不比较结束符NULL)。
      说明:返回指向第一次出现needle位置的指针,如果没找到则返回NULL。
      

  2.   

    find行..
    楼主是要找两个特征字之间的字符的,[~1]dddd[~2] 
    如果是这样呢char * = "dddddddddddddddddddddddddddd[~1]dddd[~2] dddddddd";
    这样就不能定位出[~1]和[~2]之间的dddd了
      

  3.   

    char *p=strstr("[~1]dddd[~2]","ddd")
      

  4.   

    CString source = "123243[~1]dddd[~2]43536"
    int pos1 = source.find("[~1]")+4;
    int pos2 = source.find("[~2]");
    CString result = source.Mid(pos1,pos2-pos1);
      

  5.   


    如果不用CString,而是char*
    那对应的方法是:
    find   --  strstr
    mid  --   strncpy
      

  6.   

    char* 的,好像不能这么用呢?能不能给个例子,以提问时的内容
      

  7.   

    char source[] = "[~1]dddd[~2]" ;
    char *pdest;
    int pos1 = strstr( source , "[~1]") - source + 4 ;
    int pos2 = strstr( source , "[~2]") - source  ;
    int length = pos2 - pos1;
    char result[100];
    strncpy(result,source+pos1,length);
    result[length]='\0';