如何在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);
}
} .
不好意思,我一直编程是用FORTRAN,你的问题可以到计算板块问问,那里应该有了解的。。。 本帖最后由 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
************************
输出结果:
************************
谢谢楼主,不过我一直想知道不用MFC应该怎样获取。。 回复 4 # yu婧 的帖子
本来就没有用MFC。 回复 5 # Rainyboy 的帖子
那用MFC该怎么获取? 本帖最后由 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);
}
回复 6 # sunminmin 的帖子
MFC是用C++封装的WINAPI,本质上是C++语言的一个库类,因此,我们在使用MFC时也可以使用标准C++库类进行操作。
所以,不存在“在MFC中怎么获取”这一类问题。 回复 7 # ibrave 的帖子
能写个简单例子吗?
比如txt中:
1 2 3
4 5 6
7 8 9
把这三列写到三数组中。 回复 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]