RT
怎样逐行读取文本文件的内容
例如
45,28,2,45,45
4,8,566,26,32
...
然后存到listctrl里面
不能用CStdioFile  里面好多函数WINCE好像没有很急哦 多谢大家帮忙 最好有源码

解决方案 »

  1.   

    用C++STLifstream in("2_3.cpp");   //该源文件的名字
     
    string line;                        //该源文件得行内容
    int count=0;                      //该源文件所含行有多少vector<string> vecString; while( getline(in,line) )         //读取每行内容
     {
      vecString.push_back(line);
     }
      

  2.   

    保存!!!!! 
    CString str;    
    GetDlgItemText(IDC_EDIT_HAHA,str);   //你可以获得列表框的数据
    char szFilter[]= "文本文件 (*.txt)|*.txt|所有文件 (*.*)|*.*||";   
        CFileDialog  SaveDlg(false,NULL,NULL, OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT, szFilter,this);  
        SaveDlg.m_ofn.lStructSize=sizeof(SaveDlg.m_ofn);  
        SaveDlg.m_ofn.hwndOwner = NULL;  
        SaveDlg.m_ofn.lpstrTitle= "保存为"; 
        SaveDlg.m_ofn.lpstrDefExt="txt"; 
        
        if(SaveDlg.DoModal()==IDOK) 
        { 
            CString strPathName=SaveDlg.GetPathName(); 
            CFile   m_fileSave;         
            m_fileSave.Open(strPathName,CFile::modeCreate|CFile::modeWrite);
            str += 0x0d;      \\回车     在末尾加个标志      
            str += 0x0a;      \\换行      在末尾加个标志 
            m_fileSave.Write(str,str.GetLength());       //写入列表框的数据
            m_fileSave.Close();
        } 
    打开!!!     char szFilter[]= "文本文件 (*.txt)|*.txt|所有文件 (*.*)|*.*||";   
        CFileDialog  SaveDlg(true,NULL,NULL, OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT, szFilter,this);  
        SaveDlg.m_ofn.lStructSize=sizeof(SaveDlg.m_ofn);  
        SaveDlg.m_ofn.hwndOwner = NULL;  
        SaveDlg.m_ofn.lpstrTitle= "打开"; 
        SaveDlg.m_ofn.lpstrDefExt="txt"; 
        
        if(SaveDlg.DoModal()==IDOK) 
        {
            CString strPathName=SaveDlg.GetPathName(); 
            CFile   m_fileOpen;         
            m_fileOpen.Open(strPathName,CFile::modeRead);
            char   buffer[1000];   
            char   buffer1[1000];
            int       flag = 0;
            int    nFileSize=m_fileOpen.GetLength();//得到文件长度        while(nFileSize>0)   
            {   
                memset(buffer,0,1000);   
                int   nSize=sizeof(buffer);   
                if(nSize>nFileSize)   
                    nSize=nFileSize;   
                m_fileOpen.Read(&buffer,nSize);   
                m_fileOpen.Seek(-nSize,CFile::current);   
                int len=0;     
                BOOL bRet = TRUE;   
                while(bRet==TRUE)   
                {  
                    //读到标志那就换下一行 
                    if((buffer[len]==0x0d)&&(buffer[len+1]==0x0a))   
                    {         
                        bRet=FALSE;
                        flag++;
                        len++; 
                        
                    }   
                    len++;
                }   
                memset(buffer1,0,1000);   
                strncat(buffer1,buffer,len-2);    //不要后面的回车和换行
                m_fileOpen.Seek(len,CFile::current);      
                nFileSize -= len;  
                switch(flag)
                {
                case 1:SetDlgItemText(IDC_EDIT_HAHA,buffer1);break; //得到文本中的数据显示到列表框中
                default:break;
                }
            }
            m_fileOpen.Close();
        }       
      

  3.   

    fread(...)
    while(fgets(...)) {
    }
    fclose(...).
      

  4.   

    fopen()
    while (fgets()) {
    }
    fclose()