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;
} 展开
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;
} 展开
1个回答
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询