2013-01-07 386 views
1

我有一个csv文件读取问题。我对mfc很新,希望有人能帮助我。所以...我有一个按钮,并与我打开文件对话框,并选择CSV文件。在csv文件中,我有不同的形状(矩形,椭圆,多边形)与颜色和位置信息(separtor是;)。现在我需要在ListBox中显示这些信息,并且在这里我卡住了。我到目前为止(代码)...我不知道它是好的,我找不到任何好帮手,所以我希望有人可以给我一个提示。C++ mfc csv文件读取

void CDialogDrawing::OnBnClickedButton2() 
{ 

     TCHAR filtri[] = _T("CSV files (*.csv)|*.csv||"); 
     CString path; 

     CFileDialog dlg(TRUE, _T("csv"), _T("*.csv"), OFN_FILEMUSTEXIST | OFN_HIDEREADONLY, filtri); 
     dlg.m_ofn.lpstrTitle = _T("Open..."); 

     if(dlg.DoModal() == IDOK) //OK 
     { 
     path = dlg.GetPathName(); 
     // 
     CStdioFile readFile; 
     CFileException fileException; 
     CString strLine; 

     if(readFile.Open(path, CFile::modeRead, &fileException)) 
     { 
      while (readFile.ReadString(strLine)); 
      { 
        seznamLikov.AddString(strLine); 
      } 
     } 
     else 
     { 
      CString strErrorMsg; 
      strErrorMsg.Format(_T("Can't open file %s , error : %u"), path, fileException.m_cause); 
      AfxMessageBox(strErrorMsg); 
    } 
    readFile.Close(); 
} 
} 

回答

1

尾随分号while后:

while (readFile.ReadString(strLine)); 
{ 
    seznamLikov.AddString(strLine); 
} 

删除它,因为它是等效于:

while (readFile.ReadString(strLine)) {} 

{ 
    seznamLikov.AddString(strLine); 
} 

意思AddString()将只被调用一次,ReadString()失败之后。