txt文件里的数据是如这样的:
100
100
100
100
114.12
126.78
136.51
142.86
144.8
142.12
135.48
125.03
每一行就是一个数据,并保存在一个数组里。我自己有尝试写,但不对。请大家用代码指导我一下。

解决方案 »

  1.   

    try
    {
    CString strTemp;
    BOOL bResult = TRUE;
    while (bResult)
    {
    bResult = file.ReadString(strTemp);
    if (bPushEmptyLine || !strTemp.IsEmpty())
    {
    vct.push_back(strTemp);
    }
    } }
    catch(CFileException* pe)
    {
    TRACE(_T("File could not be opened, cause = %d\n"),
    pe->m_cause);
    pe->Delete();
    }
      

  2.   

    CStdioFile f;
    f.Open(pszFileName,CFile::modeRead|CFile::typeText);
    CString str;
    f.ReadString(str);
    ...
    f.Close();
      

  3.   

    void CQTAView::OnImportdata() 
    {
    CString FilePath;
    CStdioFile file;
    CString str;
    CStringArray StrAry; 
    CFileDialog txtFile(TRUE,"*.txt",NULL,OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT, 
    "Data Files (*.txt;*.dat)|*.txt; *.dat|All Files (*.*)|*.*||", NULL);
    if (txtFile.DoModal()==IDOK)
    {
    FilePath=txtFile.GetPathName();
    BOOL bOpen=file.Open(FilePath,CFile::modeRead);  //open measure_sample.txt 
    if(bOpen)                                        //open success
    {
    while(file.ReadString(str))
    {
    CString StrTemp=buff;
    StrTemp.TrimRight();
    StrAry.Add(StrTemp);
    }
    }
    }
    }
    我只读到第一行的,不知道如何控制其往下读。
      

  4.   

    while(file.ReadString(str))
    {
    CString StrTemp = str.TrimRight();
    StrAry.Add(StrTemp);
    }
      

  5.   


    while(file.ReadString(str)) 

       StrAry.Add(str.TrimRight()); 

      

  6.   

    可是照楼上的这么改会报错cannot convert from 'void' to 'class CString'
      

  7.   

    是错了,TrimRight() 没有返回值,想当然以为返回了自己:(while(file.ReadString(str)) 

    str.TrimRight(); 
    StrAry.Add(str); 

      

  8.   

    这样看看,问题出在哪里?while(file.ReadString(str)) 

    str.TrimRight();
    MessageBox(str); 
    StrAry.Add(str); 
      

  9.   

    好像是读进去了,我在test.txt里放了100 100 100
                                   200 200 200
    用上面的方法是先弹出一个MessageBox,100 100 100,点确定以后,
                  再弹出一个MessageBox,200 200 200
    那应该是对的,但请问,照我的想法,我是想把数存在StrAry里,那我怎么看里面的数是读取正确了呢?
      

  10.   

    CStringArray 一样用循环读取
    GetSize 获得元素个数
    下标或者GetAt获得元素值
      

  11.   

    while(file.ReadString(str)) 

    CString StrTemp=buff; //buff我找了半天没找到.
    StrTemp.TrimRight(); 
    StrAry.Add(StrTemp); 

      

  12.   

    可以这样看:CString strRet;
    for(int i = 0; i<StrAry.GetCount(); i++)
    {
    strRet+=StrAry[i];
    }
    MessageBox(strRet);//加到原代码的后面
      

  13.   

    对,我上面的buff是一着急,写错了。
    现在在大家的帮助下,解决了!非常感谢!
    但我还有一个小小的问题,不是很明白:
    while(file.ReadString(str))        //这不是只读一行吗?但为什么会把每一行的数据都读进来,放在str里?
    {
    str.TrimRight();
    StrAry.Add(str); 
    }
      

  14.   

    这是个循环诶,当file.ReadString(str)返回false的时候说明已经读到尾了呀。StrAry.Add(str); 这句就是每次都把读到的str压入StrAry中,有什么好疑问的呢?
      

  15.   

    因为我看到“CStdioFile类的ReadString()方法只能读文本文件的一行”,我才奇怪它是怎么读下去的。
      

  16.   

    不管怎么样,还是感谢大家。第一次用MFC做东西,有很多不明白的地方,多谢你们的指教。