首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VC/MFC >

VC++中怎么获取打开的文件内容

2012-03-09 
VC++中如何获取打开的文件内容?我在对话框中设置了一个按钮,用来打开文件,弹出“打开文件”对话框,选定文件

VC++中如何获取打开的文件内容?
我在对话框中设置了一个按钮,用来打开文件,弹出“打开文件”对话框,选定文件打开后,如何获取打开了的文本文件的内容,文件是点的坐标文件。要求放在两个数组里面,一个存放点名,一个存放坐标。
部分代码如下:
void   CTransform::OnOpenfile()  
{
//   TODO:   Add   your   control   notification   handler   code   here
CFileDialog   FileDlg(TRUE);
FileDlg.m_ofn.lpstrTitle= "打开文件 ";
                  FileDlg.m_ofn.lpstrFilter= "Text   Files(*.txt)\0*.txt\0ALL   Files(*.*)\0*.*\0\0 ";

if(IDOK==FileDlg.DoModal())
{
CFile   file(FileDlg.GetFileName(),CFile::modeRead);
char   *pBuf;
                                    DWORD   dwFileLen;
dwFileLen=file.GetLength();
pBuf=new   char[dwFileLen+1];
pBuf[dwFileLen]=0;
file.Read(pBuf,dwFileLen);
                file.Close();
MessageBox(pBuf);//显示打开的文件,可以显示。
//接着就是如何把pBuf所指向的数据进行分离并存放在不同数组里面的问题了,各位达人帮帮忙哈~小弟感激不尽!!急啊!~!~!
文件格式如下:
点1   4581691.012       556114.680     4389360.696
点2   4581691.026       556114.686     4389360.685
点3   4627846.128       119629.178     4372999.723
点4   4627846.140       119629.184     4372999.712
点5   4433469.953       362672.672     4556211.610
点6   4433470.008       362672.669     4556211.623  
点7   2587384.489   -1043033.504     5716563.979
点8   2587384.500   -1043033.500     5716563.969
点9   2679690.006     -727951.336     5722789.146
点10   2679690.021     -727951.331     5722789.142
点11   2102940.337       721569.379     5958192.113  
点12   2102940.346       721569.384     5958192.101

[解决办法]
由于上面的代码不是在开发工具中写的,所以有很多错误,请多原谅


void CTransform::OnOpenfile()
{
CString mTempStr; //保存每行文本
CString strItem[4]; //保存每行文本分离的子字符串
CString strPointName[1000]; //点名称
double mPoint[1000][3];//点坐标
int cnt = 0;

// TODO: Add your control notification handler code here
CFileDialog FileDlg(TRUE);
FileDlg.m_ofn.lpstrTitle= "打开文件 ";
FileDlg.m_ofn.lpstrFilter= "Text Files(*.txt)\0*.txt\0ALL Files(*.*)\0*.*\0\0 ";

if(IDOK==FileDlg.DoModal())
{
CStdioFile file(FileDlg.GetFileName(),CFile::modeRead);

while (file.ReadString(mTempStr))
{
mTempStr.TrimRight();
//提取出4段子字符串
for (int i = 0; i < 4; i++)
{
AfxExtractSubString(strItem[i], mTempStr, i, ' ');
}

//对数值进行保存
strPointName[cnt] = strItem[0];
mPoint[cnt][0] = atof(strItem[1]);
mPoint[cnt][1] = atof(strItem[2]);
mPoint[cnt][2] = atof(strItem[3]);

cnt++;
}

file.Close();
}
}
[解决办法]
CFileDialog FileDlg(TRUE);
FileDlg.m_ofn.lpstrTitle= "打开文件 ";
FileDlg.m_ofn.lpstrFilter= "Text Files(*.txt)\0*.txt\0ALL Files(*.*)\0*.*\0\0 ";

if(IDOK==FileDlg.DoModal())
{
FILE *fp;
char ch[100];
float x, y, z;

if( (fp = fopen(FileDlg.GetFileName(), "r ")) != NULL )


{
while(!feof(fp))
{
fscanf(fp, "%s %f %f %f ", ch, &x, &y, &z );
}
}
}

热点排行