高手请进,读取自定义的数据文本文件问题,急急急~~~在线等着你的指点.
文本格式如下:
0 c:\sample\1.bmp 10 211 50 50
1 c:\sample\2.bmp 30 72 50 50
0 c:\sample\3.bmp 130 32 50 50
解释:
开始0或1为类别 而后依次给出目标的路径,而后为目标的左上角X坐标、左上角Y坐标、宽度和长度,以tab键分隔。
比如第一个样本类别0,位于C:\sample\1.bmp中以(10, 211)为左上角、长宽各50的区域中,以此类推...个数不限,有很多个数据
将这样的脚本文件载入,并保存为如下定义的struct数组
struct tag_areainfo {
char szPath[256];
int iLeft;
int iTop;
int iWidth;
int iHeight;
int iLabel;
} m_arrAreaInfo[MAX_AREA];
每行的信息保存在数组的一个元素中,并将区域的个数保存在m_iAreaCount中。
int iLabel 用来存储类别信息。MAX_AREA是一个常数(用#define定义为256),如果脚本文件中的区域个数超过了这个常数,则程序自动结束;如果在读取文件的过程中发现与预定义的格式不符,也立即结束程序。
小弟求各位高手大哥帮帮忙写出程序.....本人感激不尽> > > > > 谢谢
[解决办法]
#include <fstream>
#include <strstream.h>
using namespace std;
ifstream inf(文件名);//生成输入文件流
char inbuf[81];
while(inf.getline(inbuf,81))//此处我修改为了getline,读取一行到inbuf缓冲区
{
istrstream ins(inbuf, strlen(inbuf));//由生成的inbuf生成输入字符串流
ins> > m_arrAreaInfo[i].iLabel> > m_arrAreaInfo[i].iLeft> > m_arrAreaInfo[i].iTop> > m_arrAreaInfo[i].iWidth> > m_arrAreaInfo[i].iHeight;//从输入字符串流中读取相应的数值到对应类型的变量中
ins.getline(m_arrAreaInfo[i].szPath,256);//获取剩下的字符串,这也是为什么我希望你将路径放置到最后的原因,这样便于处理
}