sunminmin 发表于 2011-5-7 13:01

如何在VC++中读取txt文件数据存到多个一维数组中

在VC++6.0下创建MFC AppWizard 基于基本对话框的工程TxtArray 。
我用下面的代码能获取txt文件的路径,但是不知把txt中每一列数据存到一个一维数组中,
txt中数据格式为3列数据:
1 1 2
2 1 3
3 1 4
1 2 3
2 2 4
3 2 5
1 3 4
........
怎样才能把这三列数据存到对应的三个一维数组中。
A[]={1,2,3,1,2,3,1......}
B[]={1,1,1,2,2,2,3........}
C[]={2,3,4,3,4,5,4........}

获取txt路径的代码如下:void CTxtArrayDlg ::OnButton1()
{
        // TODO: Add your control notification handler code here

        char szFilters[] = "MyType Files (*.txt)|*.txt|All Files (*.*)|*.*||";
       
        CFileDialog fileDlg (TRUE, "txt", "*.txt",OFN_FILEMUSTEXIST| OFN_HIDEREADONLY, szFilters, this);
       
        // Display the file dialog. When user clicks OK, fileDlg.DoModal()
        // returns IDOK.
        if( fileDlg.DoModal()==IDOK )
        {
                CString pathName = fileDlg.GetPathName();
               
                m_FilePath = pathName;
               
                UpdateData(FALSE);   
        }
       

}

欧阳中华 发表于 2011-5-8 08:31

.
    不好意思,我一直编程是用FORTRAN,你的问题可以到计算板块问问,那里应该有了解的。。。

Rainyboy 发表于 2011-5-8 10:14

本帖最后由 Rainyboy 于 2011-5-8 10:15 编辑

#include <fstream>
#include <string>
#include <sstream>
#include <iomanip>
#include <iostream>
using namespace std;

int ReadDataFromFile(double * DataList[] ,int DataListCount,string &FileName)
{
      ifstream DataFile;
      int CurrentDataIndex = 0;;
      DataFile.open(FileName.c_str(),ios::in);
      if(DataFile.is_open()==true)
      {
                char buffer;
                while(DataFile.getline(buffer,200))
                {
                        string strdata;
                        stringstream ss(buffer);
                        for(int i =0;i<DataListCount;++i)
                        {
                              getline(ss,strdata,' ');
                              DataList = strtod(strdata.c_str(),NULL);
                        }
                        ++CurrentDataIndex;
                }
      }
      return CurrentDataIndex;
}


int _tmain(int argc, _TCHAR* argv[])
{
      double a,b,c;
      double* DataList[] = {a,b,c};
      int DataCount = ReadDataFromFile(DataList,3,string("test.txt"));
      for(int i=0;i<DataCount;++i)
      {
                cout<<setw(10)<<a<<setw(10)<<b<<setw(10)<<c<<endl;
      }
      system("pause");
      return 0;
}*************************
test.txt的内容:
*************************
1 1.1 1.11
2 2.2 2.22
3 3.3 3.33
4 4.4 4.44
5 5.5 5.55




************************
输出结果:
************************




yu婧 发表于 2011-5-24 10:26

谢谢楼主,不过我一直想知道不用MFC应该怎样获取。。

Rainyboy 发表于 2011-5-24 12:01

回复 4 # yu婧 的帖子

本来就没有用MFC。

sunminmin 发表于 2011-5-26 08:53

回复 5 # Rainyboy 的帖子

那用MFC该怎么获取?

ibrave 发表于 2011-5-26 09:12

本帖最后由 ibrave 于 2011-5-26 09:16 编辑

回复 6 # sunminmin 的帖子

你可以先利用read函数把txt里面的字符读到一个buffer里面,
然后做一个循环;
for(i=0;i<size;i=i+3)

    coloum1=atoi(buffer);
    coloum2=atoi(buffer);
    coloum3=atoi(buffer);


Rainyboy 发表于 2011-5-26 13:45

回复 6 # sunminmin 的帖子

MFC是用C++封装的WINAPI,本质上是C++语言的一个库类,因此,我们在使用MFC时也可以使用标准C++库类进行操作。

所以,不存在“在MFC中怎么获取”这一类问题。

sunminmin 发表于 2011-5-29 22:29

回复 7 # ibrave 的帖子

能写个简单例子吗?
比如txt中:
1 2 3
4 5 6
7 8 9
把这三列写到三数组中。

ibrave 发表于 2011-5-30 10:26

回复 9 # sunminmin 的帖子

CFile cfile;
char buffer;
UINT nBytesRead = cfile.Read( buffer, 15 );
for(i=0;i<16;i=i+5)

    coloum1=atoi(buffer);
    coloum2=atoi(buffer);
    coloum3=atoi(buffer);
页: [1]
查看完整版本: 如何在VC++中读取txt文件数据存到多个一维数组中