怎样读取文件中的数据?

mlpok2000 2008-06-01 10:48:53
我用VC读取文件可以,用的是:
void Cxxx::OnReadFile()
{
// 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);

}
}
这样可以把txt文件中的内容读入,并显示出来。
但是,我想实现的功能是读取文件中的数据【文件中都是整数】,将数据存到整型数组里。以方便我用moveto,lineto画曲线。
谢谢大家指导~
...全文
401 27 打赏 收藏 转发到动态 举报
写回复
用AI写文章
27 条回复
切换为时间正序
请发表友善的回复…
发表回复
mlpok2000 2008-06-05
  • 打赏
  • 举报
回复
谢谢各位,问题于昨日搞定
还是看孙鑫的书。。。
xlzxlich 2008-06-03
  • 打赏
  • 举报
回复

ifstream f;
vector<POINT> pt;

FILE *fp;
fopen( &fp, "fscanf.out", "r+" );
while(!eof(fp))
{
POINT p1;
fscanf( fp, "%d %d", &p1.x, &p1.y );
pt.push_back(p1);

}

for (int i=0; i<pt.size(); ++i)
{
 pDC->MoveTo((pt[i].x, pt[i].y);
}



Eleven 2008-06-03
  • 打赏
  • 举报
回复
Up
菜牛 2008-06-03
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 cnzdgs 的回复:]
如果文件中是二进制形式的数据,直接读到int数组里面就可以。
[/Quote]
如果文件中是文本形式的数据,读取到字符串中然后根据数据格式拆分转换为数值,拆分可以用strok()或者CString::Tokenize()或者自己查找分隔符,转换可以用诸如atoi等函数。
mlpok2000 2008-06-02
  • 打赏
  • 举报
回复
[Quote=引用 18 楼 cnzdgs 的回复:]
首先要确定你的文件中的数据是怎么储存的,与画线的关系是什么。
[/Quote]
文件里的数据就像这样存: 10 11 23 56 ...
我画线就是先把这些数放到数组里m_data[100],然后就用moveto来画。
cnzdgs 2008-06-02
  • 打赏
  • 举报
回复
首先要确定你的文件中的数据是怎么储存的,与画线的关系是什么。
mlpok2000 2008-06-02
  • 打赏
  • 举报
回复
[Quote=引用 16 楼 cnzdgs 的回复:]
引用 6 楼 mlpok2000 的回复:
引用 4 楼 cnzdgs 的回复:
如果文件中是二进制形式的数据,直接读到int数组里面就可以。

怎么个读法?

就按你上面的代码,把pBuf定义为int*型就可以了。
[/Quote]
就是说,pBuf改成 int *pBuf;
其他不变。
哪么怎么存放到m_data[100]中呢?
还是定义int *pBuf[100]?可以用 MoveTo(pBuf[2],0);什么的?
--
看到*我就晕了。。。
cnzdgs 2008-06-02
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 mlpok2000 的回复:]
引用 4 楼 cnzdgs 的回复:
如果文件中是二进制形式的数据,直接读到int数组里面就可以。

怎么个读法?
[/Quote]
就按你上面的代码,把pBuf定义为int*型就可以了。
mlpok2000 2008-06-02
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 study_live 的回复:]
将数据定义为struct类型, 以结构体写入到文件中,并以结构体读取出来.
struct st
{
Point pt;
}*sp;将结构体sp指向文件读取的第一个地址,这就是你第一个画图点了,再将sp指针下移一个sizof(st), 就指向你第二个画图点了
[/Quote]
谢谢答复。
由于特殊原因,我存的只能是把数据简单放到txt文件中。不是用结构体来存。
mlpok2000 2008-06-02
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 foxhill 的回复:]
使用INI文件比较简单,可以直接读写int类型数据。
UNIT GetPrivateProfileInt(
LPCTSTR lpAppName //INI文件中的一个字段名
LPCTSTR IpKeyName //IpAppName下的一个键名,通俗的讲就是变量名
INT nDefault //如果INI文件中没有前两个参数指定的字段或者键名,则将此值赋给变量
LPCTSTR IpFileName // 是完整的INI文件名
);
[/Quote]
我存的时候是txt...
这个使用ini怎么具体用呢。。。
谢谢先
study_live 2008-06-02
  • 打赏
  • 举报
回复
将数据定义为struct类型, 以结构体写入到文件中,并以结构体读取出来.
struct st
{
Point pt;
}*sp;
将结构体sp指向文件读取的第一个地址,这就是你第一个画图点了,再将sp指针下移一个sizof(st), 就指向你第二个画图点了
mlpok2000 2008-06-02
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 Joephia 的回复:]
C/C++ code#include <fstream.h>
//获取文件名abc.txt后,就可以挨个读取了,
//注意每个数之间要用空格,tab,或者回车分开
ifstream f;
f.open("abc.txt");
f>> m_a;
f>> m_b;
...
...
f.close();
UpdateData(FALSE);
[/Quote]
m_a,m_b是自己定义的数组吗?
就是说我可以写为:
#include <fstream.h>
ifstream f;
f.open("abc.txt");//abc为文件名
for(int i=0;i<100;i++)
{
f>> m_data[i];//m_data[100]是定义好的全局变量: int m_data[100];
}
f.close();
UpdateData(FALSE);
---
这样可以吗?
xajnewuser 2008-06-02
  • 打赏
  • 举报
回复
既然文本中的内容是自定义的,可以将文本中的整数用分隔符隔开,例如“|、#、@”等等符号,读取时根据这些符号来分割到数组里
lzg0001 2008-06-02
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 cnzdgs 的回复:]
如果文件中是二进制形式的数据,直接读到int数组里面就可以。
[/Quote]

同样一个问题,不同的回答体现出不同深度的思路!
jiqing_gao 2008-06-02
  • 打赏
  • 举报
回复
Eleven 2008-06-02
  • 打赏
  • 举报
回复
一次读取到CString对象中,再划分依次存入数组中
foxhill 2008-06-02
  • 打赏
  • 举报
回复
使用INI文件比较简单,可以直接读写int类型数据。
UNIT GetPrivateProfileInt(
LPCTSTR lpAppName //INI文件中的一个字段名
LPCTSTR IpKeyName //IpAppName下的一个键名,通俗的讲就是变量名
INT nDefault //如果INI文件中没有前两个参数指定的字段或者键名,则将此值赋给变量
LPCTSTR IpFileName // 是完整的INI文件名
);
mlpok2000 2008-06-02
  • 打赏
  • 举报
回复
[Quote=引用 21 楼 na_he 的回复:]
采用序列化的形式,或者,读出的时候读出一个整数了,写的时候格式化好了,比如每个整数必须5为,不够的时候补零,
那么读取的时候就五位五位的读取了,呵呵!
[/Quote]
文件里的数据就像这样存: 10 11 23 56 ...
哪么我3位3位的读?还是2位2位的读?。。。
还有就是怎么具体实现。【我实在是弱,望具体指导】
na_he 2008-06-02
  • 打赏
  • 举报
回复
采用序列化的形式,或者,读出的时候读出一个整数了,写的时候格式化好了,比如每个整数必须5为,不够的时候补零,
那么读取的时候就五位五位的读取了,呵呵!
mlpok2000 2008-06-02
  • 打赏
  • 举报
回复
问题还没解决。
应该怎么搞啊。。。
加载更多回复(7)

15,978

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧