瓦纳卡 湖里树:在C++里,假如来源文件只让读一遍,语句该怎么写?

来源:百度文库 编辑:查人人中国名人网 时间:2024/04/28 07:23:53
教授给了一个题目:
从daten.txt文件里读出内容,内容有三列组成
姓 名 银行存款
最后以#结尾。
输入一个叫limit的数,double类型,当银行存款大于那个limit的值时候,把姓,名,银行存款写入hoko.txt的文件

要求limit值需要自己输入,并且daten.txt只允许读一次

-----------------------例如--------------------
limit=10000

daten.txt
Lehmann Horst 12333
Schuster Susi 697
Schlolz Ute 22987
Amthor Fritz 3333
Helbig Walter 11234
#
-----
hoko.txt:
Lehmann Horst 12333
Schlolz Ute 22987
Helbig Walter 11234

我做了一下题目,但是只运行出来一半,不能实现只读一次,而且,不知道到最后#该如何判断:

#include "stdafx.h"
#include <iostream>
#include <fstream>
#include <string>
using namespace std;

void main()
{
ifstream datin("E:/c++daten/daten.txt");
ofstream datout("E:/c++daten/hoko.txt");
if(!datin ||!datout)
{
cout<<"文件错误!!"<<endl;
return;
}

string name,vorname;
double konto,limit;
char temp;
datout.setf(ios::fixed);
datout.precision(4);
datout.setf(ios::right);
cout<<"Limit::"<<endl;
cin>>limit;
temp='#'
do
{
datin>>name>>vorname>>konto;
if(konto>limit)
{
datout<<name;
datout.width(12);
datout<<vorname;
datout.width(12);
datout<<konto;
datout<<endl;
}
}
while (datin.get(temp));

}

我把后面的循环用碰到输入为#作为终止,这样能不能实现题目的要求?

可以先得到文件大小,再分配这么大的缓冲区,一次读入文件,再慢慢解析内存:)