char* str;  int index;
比如str="1,2,3"; index=8;
现在我想把str里的每个数据(每个","为一个)与index相加,不知怎么样办才好?加完后再放回到str内,即
1+8,2+8,3+8
想做成一个函数,不知怎么样做

解决方案 »

  1.   

    复杂方法,正则表达式boost库
    简单方法sscanf出来之后加上index,重建一个char*返回
      

  2.   

    sprintf(str,"%d,%d,%d"atoi(str[0])+index,atoi(str[2]),atoi(str[4]));have a try
      

  3.   

    string addindex(const char* str, int index)
    {
       string rnstr;
       for(...)
      { 
        //scan i from str;
        i+= index;
        //append i to rnstr;   
        //append ',' to rnstr;
      }
      return rnstr;
    }
      

  4.   

    sprintf(str,"%d,%d,%d",atoi(str[0])+index,atoi(str[2]),atoi(str[4]));^_^,刚才少个逗号
      

  5.   

    To zxy1492(柳暗花明又一坑) :可是我并不知道str里倒底有多少个分项,即不知它有多少个","号,因为str不是固定的
    如何解决谢谢
      

  6.   

    办法是有的去研究一下CString::Find 和CString::Mid 这两个函数你用find从0开始找,找到一个,比如他的位置是2
    那么通过Mid(0,2-0)来获得这个子篡,就是纯数字了
    然后在通过atoi转成数字,再进行操作
    然后再从位置2+1开始找,找到下一个,的位置,
    再通过mid把子窜取出来
    依次类推,到返回-1说明没有,了最后把得到的子窜操作后,格式话连起来就ok了
    这是大体的思路你去试试实现吧
    我没有具体做过,但是觉得这个方法是可行的这里面也能有一些小小的技巧,包括怎么用循环阿,怎么建新窜阿什么的
    但是都是最基础的,呵呵
      

  7.   

    CString str("1,2,3,4");
    CString str1, str2;
    int index=8; str1.Format("+%d,", index);
    str2.Format("+%d", index);
    str.Replace(",", str1);
    str += str2;
      

  8.   

    str="1,2,3"; index=8;
    sscanf(str "%d,%d,%d", &i[1],&i[2],&i[3]);
    for(int i=0; i < 3; i++)
    i[i]+=index;
    sprintf(str, "%d,%d,%d", i[i]);
      

  9.   

    修改为
    str="1,2,3"; index=8;
    sscanf(str "%d,%d,%d", &i[1],&i[2],&i[3]);
    for(int i=0; i < 3; i++)
    i[i]+=index;
    sprintf(str, "%d,%d,%d", i[0],i[1],i[2]);