注册 登录
编程论坛 VC++/MFC

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

sunminmin 发布于 2011-05-07 15:59, 6023 次点击
在VC++6.0下创建MFC AppWizard[exe] 基于基本对话框的工程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);  
        }
        

}

 
2 回复
#2
blueskiner2011-05-11 10:55
HANDLE hFile = CreateFile(...... SHARE_READ| ....)...类似的方法百度一下,知道更多。
#3
debroa7232011-05-11 23:06
用两个整形变量做游标,一个前一个后,当前一个游标遇到空格,取出两游标之间的数据,或字符串转数字,或直接使用,然后把后一个游标提到前一个游标的前面,继续移动前一个游标,再当前一个游标碰到回车换行符('\r' '\n')时,表示一组数读出来,可以读下一组了,同样,将后一个游标提到前一个游标的前二位(因为回车换行占两个字符位)。
重复上面的操作直到后一个游标移动到结束的地方。

思路是这样,代码自己搞定
可以使用 #include <string>  std::string 的函数  
find    substr   
还有 atoi 字符转数字
如果文件是二进制的,有0x00在里面,就不能用string ,因为会被截断,这时就自己写一个函数来读,一个一个字符位数据读出来做比较判断,来决定要做什么操作。
1