none
怎样用MFC读入txt文档数据? RRS feed

  • 问题

  • 请看我自己编写的程序,编译时未出现错误(但应该是有逻辑错误,呵呵),但是出现不了想要的结果,请各位高手指教。

    void CPowerSysSCAnalysisView::OnFileOpen() 
    {
    // TODO: Add your command handler code here
    // 打开源文件准备读入数据

    CString strFileName;
    CFileDialog Dlg(TRUE,"*.txt",NULL,NULL,"文本文件|*.txt||");

    if(Dlg.DoModal()==IDCANCEL)
    return;
    else if(Dlg.DoModal()==IDOK)
    {
      strFileName=Dlg.GetPathName();

      ifstream intxt(strFileName,ios::in);
      if(!intxt)
    MessageBox("不能正常打开文件: strFileName","警告",MB_OK);

    int nNodeNum,nBranNum;
    int **pCorrMatrix;
    double *pdReactVal;
    double *pdPowerVal;

    /////////////////////////////////////////////////////////////////////////////
    // 开始读入数据

    cin>>nNodeNum>>nBranNum; //读入节点数和支路数

    pCorrMatrix=new int*[nNodeNum-1];
    for(int i=0;i<nNodeNum-1;i++)
    pCorrMatrix[i]=new int[nBranNum];

    pdReactVal=new double[nBranNum];
    pdPowerVal=new double[nBranNum];

    for(i=0;i<nNodeNum-1;i++) //读入关联矩阵
    for(int j=0;j<nBranNum;j++)
    cin>>pCorrMatrix[i][j];

    for(i=0;i<nBranNum;i++) //读入支路电抗值
    cin>>pdReactVal[i];

    for(i=0;i<nBranNum;i++) //读入有源支路电源
    cin>>pdPowerVal[i];

    /////////////////////////////////////////////////////////////////////////////
    // 读入完毕,关闭文件流

    intxt.close();


    /////////////////////////////////////////////////////////////////////////////
    // 释放内存

    for(i=0;i<nNodeNum-1;i++)
    {
    delete []pCorrMatrix[i];
    }
    delete []pCorrMatrix;
    delete []pdReactVal;
    delete []pdPowerVal;
    }
    }


    如蒙相助,不胜感激!
    2010年4月18日 7:42

答案

  • 调用CFile::Read 直到没有更多数据

    读出来的数据是二进制,你需要检查文本的编码。IE的IMultiLanguage2接口支持一些常用的编码。



    The following is signature, not part of post
    Please mark the post answered your question as the answer, and mark other helpful posts as helpful.
    Visual C++ MVP
    • 已标记为答案 洛洛 2010年4月18日 14:22
    2010年4月18日 13:59
    版主