文本格式如下:1,a,b
             2,,a,c,d
             5,a,d
即每行得第一个为数字,后面得为字符,字符数量不确定(小于十个,大于一个)   
我想每次读入一行,存入到一个数组中,例如arr[0]=a;arr[1]=a;arr[2]=b......
这个是读得过程另外写得过程是将数组中得数追加写入到上面文本得后面即例如:第1行 a=x;b=y;
                                                        第2行 a=x;c=y;D=Z;
请达人写个给个例子

解决方案 »

  1.   

    1. read one line
    CStdioFile::ReadString  
    2. split string
    strtok
      

  2.   

    typedef struct line
    {
        long nNum;//存放数字
        char c[10];//存放字符
        line()
        {
            memset(c,0,10);
        }
    }Line;//存放一行信息结构体typedef CArray<Line,Line> LineArray;//存放文本信息数组,数组个数为文本行数
    //读文本
    BOOL ReadText(LineArray &linearr,LPCTSTR filename);
    //拆分字符
    void SplitLineString(Line *line,CString strLine);
    BOOL ReadText(LineArray &linearr,LPCTSTR filename)
    {
        CStdioFile file;
        if(!file.Open(filename,CStdioFile::modeRead))
            return FALSE;
        CString strLine;
        while(file.ReadString(strLine))
        {    
            Line line;
            SplitLineString(&line,strLine);
            linearr.Add(line);
        }
        file.Close();
        return TRUE;
    }void SplitLineString(Line *line,CString strLine)
    {
        CString s;
        TCHAR c=',';
        int index=0;
        int i=strLine.Find(c);
        while(i!=-1)
        {
            s=strLine.Left(i);
            if(index==0)
                line->nNum=atoi(s.GetBuffer());
            else
                line->c[index-1]=s.GetAt(0);
            index++;
            strLine=strLine.Right(strLine.GetLength()-i-1);
            i=strLine.Find(c);
        }
        line->c[index-1]=strLine.GetAt(0);
    }//例子,VS2005,XP下测试通过
    LineArray arr;
    ReadText(arr,_T("c:\\a.txt"));
      

  3.   

    写过程就是如下:
                  1 a=10 b=20
                  2 a=30 b=30 c=30
                  ..................
    等等