读书人

关于list链表的文件输入输出有关问题

发布时间: 2013-07-16 22:38:05 作者: rapoo

关于list链表的文件输入输出问题,帮忙看看一个小例子
例如定义一个结构体
struct employee{
string m_num; //编号
string m_name; //姓名
string m_dep; //部门
long m_salary; //应付工资
long m_tax; //个人所得税
long m_actsalary; //实付工资
};
原先已经将几个结构体数据放入文件中了,想把它全部重新读出来并形成链表下面是我写读取数据的程序,
list<employee> emps;
void out_file(){
ifstream filem("empDate.txt",ios::in);
list<employee>iterator iter;
employee e1;
string num;
string name;
string dep;
long salary;
long tax;
long actsalary;
while(!filem.eof()){
filem>>e1.m_num>>e1.m_name>>e1.m_dep>>e1.m_salary>>e1.m_tax>>e1.m_actsalary;
e1.m_num=num;
e1.m_name=name;
e1.m_dep=dep;
e1.m_salary=salary;
e1.m_tax=tax;
e1.m_actsalary=actsalary;
emps.push_back(e1);
}
filem.close();
} 链表 Structure
[解决办法]
问题是什么? 猜谜语?
[解决办法]
是完全读取不到内容还是读入的内容不正确?
读取和你写入是对应的, 得看你写的格式和读的格式是否匹配, 或者给出文件的内容才好看.
推测你的写法, 如果名字这些字符串里含有空格的话就会有问题.
[解决办法]

引用:
恩恩 ,我现在把程序又改了一下子,你帮忙看一下,我觉得更合理了,但是好像应该是读不到
void out_file(){
ifstream filem("empDate.txt",ios::in);
while(!filem.eof()){


employee e1;
filem>>e1.m_num>>e1.m_name>>e1.m_dep>>e1.m_salary>>e1.m_tax>>e1.m_actsalary;
emps.push_back(e1);
}
filem.close();
}
要读取的文件内容如下:
0001
唐小明
行政部
3000
200
100
0002
小东
财政部
3000
2000
300
我是根据文件内容格式输的,和它一样的格式



按照这个内容和读取方法是没问题的哦, 确认文件路径没问题, 是打开了的撒?
[解决办法]
直接把string变量储存到文件中再读取,有时可能会出错哦
[解决办法]
这个问题,主要是如何读取,有无容错的问题。
如果不带容错
并且输入数据里,不包含空格,可以用空格做分隔符,直接输入输出。
每笔数据输出一个换行。
当然,也可以每个数据一个换行,直接用 << ,>> 输入输出即可。

如果有容错,或者数据带空格,最好读字符串,分行读取,然后解析数据;
错的数据扔掉,或者报错吗,结束读数。

读书人网 >C++

热点推荐