您好,欢迎来到华佗小知识。
搜索
您的当前位置:首页读取TXT文件方法

读取TXT文件方法

来源:华佗小知识


二。程序原理

首先我们知道假如要进行的文件操作只是简单的读写整行的字符串,那么最好使用CStdioFile,用它来进行此类操作非常方便。因此我们便很自然想到:首先我们把文本文件的每行数据读到一个缓冲区,然后使用sscanf把它转化为字符格式。

那么具体该怎么做呢?比如在一个txt文件里每一行数据格式是这样的:

A1 A2 A3 A3 ……An

那么读取的主体代码是:

CStdioFile File; // 定义一个CStdioFile类变量File

CString FileData; // 定义一个CString,作为一个缓冲区

/*定义n个临时字符串变量,大小依据实际情况,这里暂设为10

*/

char TempStr1[10],TempStr2[10]……TempStrN[10];

File.ReadString(FileData); // 将一行数据读到缓冲区

/*将该行数据的n个字符读到n个临时字符串变量*/

sscanf(FileData,\"%s %s %s %s ……%s\",TempStr1,TempStr2……TempStrN);

这种读法的一个好处是对文本格式要求不严,如下面的格式也可以(前面可有未知个空格) A1 A2 (两个数据之间也可有未知个空格) A3 A3 ……An

三。编程步骤

下面我以一个单文档程序来具体说明我的做法。该程序的主要功能是读取文本文件的坐标数据,然后在客户区里用直线将这些坐标连起来,并显示。

1、 启动Visual C++6.0,生成一个单文档的工程,将该工程命名为ReadCoodinate.

2、 添加一个“读取文本数据”的菜单项。

3、 给视图类添加两个public变量:

CArray m_PointArray; // 用于记录坐标点数据

int m_PointNum; // 用于记录坐标点个数,在视图类构造函数中初始化为0.

4、 给“读取文本数据”添加相应的单击消息响应函数。代码如下:

void CReadCoodinateView::OnReaddata()

{

// TODO: Add your command handler code here

CFileDialog dlg(TRUE); // 定义一个文件对话框变量

if(dlg.DoModal()==IDOK)

{

CString m_FilePath = dlg.GetPathName(); //取得文件路径及文件名

CStdioFile File;

File.Open(m_FilePath,CFile::modeRead); //以读模式打开文本文件

CString FileData; //定义一个CString变量作为缓冲区

File.ReadString(FileData);//读取第一行数据,第一行数据为坐标点数据

/*定义两个临时字符串,并初始化为'\\0'*/

char TempStr1[10];

char TempStr2[10];

memset(TempStr1,'\\0',10);

memset(TempStr2,'\\0',10);

sscanf(FileData,\"%s\",TempStr1);

m_PointNum = atoi(TempStr1); // 获取坐标点个数

/*逐行读取坐标数据*/

for (int i = 0;i{

File.ReadString(FileData);

sscanf(FileData,\"%s %s\",TempStr1,TempStr2);

m_PointArray.Add(CPoint(atoi(TempStr1),atoi(TempStr2)));//将其存入坐标点数组

}

CDC *pDC = GetDC(); //获取设备环境;

/*根据坐标点绘出直线*/

for (i = 0;i{

pDC->MoveTo(m_PointArray[i].x,m_PointArray[i].y);

pDC->LineTo(m_PointArray[i+1].x,m_PointArray[i+1].y);

}

ReleaseDC(pDC);}

}

//使用完后,释放设备环境

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- huatuo0.cn 版权所有 湘ICP备2023017654号-2

违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务