fstream.open只带一个参数(文件名)和带2个参数(文件名,打开方式)区别在哪里呢?

第一个问题:fstreamff;ff.open(yi);//默认的打开方式,没有自动开启输入输出模式吗?ff.open(yi,ios::in|ios::out|ios::... 第一个问题:
fstream ff;
ff.open(yi);//默认的打开方式,没有自动开启输入输出模式吗?
ff.open(yi, ios::in | ios::out | ios::);//必须这样才能进行文件的输入和输出吗?
如果默认的没有开启输入输出,就必须得ff<<或者ff>>这样使用吗?
第二个问题:
while (InOut.read((char*)&pp, sizeof pp))//还看不懂这个循环,他是怎么结束第一次循环的?
//while()里面的条件始终没变,为什么第二次循环输出的内容就不一样了呢?

下面是程序:
#include <iostream>
#include <string>
#include <iomanip>
#include <fstream>
using namespace std;
const int num=10;
struct people
{
char name[num];
int age;
float pay;
};
const char * file="d:people.txt";
int main()
{
people pp={"ChenTao", 23, 945.34f};
ofstream fout(file, ios::binary);
fout.write((char*)&pp, sizeof pp);
fout.close();
people pp1={"LiLiTe", 45, 1065.58f};
fout.open(file, ios::app|ios::binary);
fout.seekp(sizeof pp, ios::beg);
fout.write((char*)&pp1, sizeof pp1);
fout.close();
fstream InOut;
InOut .open(file, ios::in|ios::out|ios::binary);//这里去掉输入输出模式,在编译就没有输出
cout<<fixed;
int count=0;
if (InOut.is_open())
{
InOut.seekp(0);
cout<<"当前内容是:"<<file<<"\n";
while (InOut.read((char*)&pp, sizeof pp))//还看不懂这个循环,他是怎么结束第一次循环的?
//while()里面的条件始终没变,为什么第二次循环输出的内容就不一样了呢?
cout<<count++<<":"<<setw(num)<<pp.name<<":"<<setprecision(0)<<setw(12)<<pp.age<<setprecision(2)<<setw(16)<<pp.pay<<endl;

}

return 0;
}
展开
 我来答
wutuha_satan
2014-01-10 · TA获得超过234个赞
知道小有建树答主
回答量:92
采纳率:0%
帮助的人:33.8万
展开全部
第一个问题:ff.open本身是有三个参数的,只是它定义了几种缺省参数,不填的话就是用的是缺省的模式。建议自己指定模式,这样比较清楚。

第二个问题:while循环里的语句就是从文件里读内容到pp里,每次读一个,直到读不出来为止。判断条件是否读到文件尾了。每次读到一个pople时,文件指针就会移动,就好比看书,每次翻一页,每次得到的内容当然是不一样的。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式