在文本文件中的数据如下  分成三组。第一组数据包含3列(1-3列)(若不足三列则以空格补充)(148,23)
第二组数据包含4列(8-11列,第一第二组之间空了5列)(1300,100)
第三组数据是浮点数 除小数点外包含4列(13-16列)(2.600,1.30)
148     1300        2.600
  23       100         1.30
.........................
现在想用三个数组分别把这三组数据读取出来 应该怎么做?

解决方案 »

  1.   

    这个很简单啊。
    用CStidoFile类来读
    CStidoFile file;
    file.open("c:\\xx.txt",只读模式);//
    CString str;
    while(file.readstring(str))

       //在这里实现读取
       //由于每个字段的个数都固定好了,就用str.Mid的方式来读各个字段 分别保存起来就可以啦
    }//循环读取
      

  2.   

    给楼主一个我用了很久的函数,非常方便。int AnalyzeOneLine(char* buf,int* a)
    {
    //参数一、传人的字符串
    //参数二、int * 数组保存的是字串的个数a[0]为第一个字串的开始位,a[1]为第二个字串的开始位
    //返回值为一行中字符串的个数
    int count=0;
    BOOL bSpace=TRUE;
    int length=int(strlen(buf)); //得到字符串长度
    for(int i=0;i<length;i++) //对所有字符进行循环
    {
    if(bSpace && buf[i]!=' ' && buf[i]!='\t') //字符不是空格和TAB键
    {
    a[count]=i;
    count++;
    bSpace=FALSE;
    }
    else if(!bSpace &&(buf[i]==' ' || buf[i]=='\t'))
    {
    buf[i]='\0';
    bSpace=TRUE;
    }
    }
    return count;
    }//使用过程
    char    buf[500]; //保存一行的字符串
    int    a[20]; //保存每个字串的位置,最多可以保存个
    CString strLine; //读取的一行数据
    CString Name1,Name2,Name3,Name4;strcpy(buf,strLine.GetBuffer(strLine.GetLength()));
    AnalyzeOneLine(buf,a); //调用处理函数
    Name1=buf+a[1]; //第二个字符串
    Name2=buf+a[2]; //第三个字符串
    Name3=buf+a[3]; //第四个字符串