C++ 通过以下几个类支持文件的输入和输出
ofstream写操作的文件类由ostream引申而来
ifstream读操作的文件类由istream引申而来
fstream可同时读写操作的文件类由iostream引申而来
ifstream in("tian.txt");//打开一个文件
ifstream in;
in.open("tian.txt",mode);
istream(输入流)类型,提供输入操作
ostream(输出流)类型,提供输出操作
cin:读入标准输入的istream对象
cout:写道标准输出的ostream对象
cerr:输出标准错误的ostream对象
。cerr常用于程序错误信息
getline函数,需要分别取istream类型和string类型的两个引用参数,其功能是从istream对象读取一个单词,然后写入string对象中
io对象不可赋值和复制
文件模式
in打开文件做读操作
out打开文件做写操作
app在每次打开文件前找到文件尾
ate打开文件后立即将文件定位在文件尾
trunc打开文件时清空已存在的文件流
binary以二进制模式进行IO操作
从效果看为ofstream对象制定out操作模式等效于同时指定了out和trunc操作
默认时,与ifstream流对象关联的文件将以in模式打开,该模式允许文件做读的操作;
与ofstream关联的文件则以out模式打开,使文件科协。以out模式打开的文件将被清空,丢弃该文件
要保存ofstream方式打开的文件唯一的方法是显示地制定app模式打开
ofstream appfile("file2",ofstream::app)
fstream默认情况下以in和out模式同时打开,当文件同时以in和out打开时不清空。如果打开fstream所关联的文件时,只使用out模式而不制定in模式,则文件会清空已存在的数据。如果打开文件是制定了trunc模式,则文件一定会被清空
fstream inOut("copyOut",fstream::in|fstream::out);存储的所有数据
文件模式的组合
out 打开文件做写操作,删除文件中已有的数据
out|app打开文件做写操作,在文件尾写入
out|trunc与out模式相同
in打开文件做读操作
in|out打开文件做读、写操作,并定位于文件开头处
in|out|trunc打开文件做读、写操作,删除文件中已经有的数据。
添加上ate只会改变文件打开时的初始位置,第一次读或写之前,将文件定位于文件末尾
一个打开并检查输入文件的程序
ifstream& open_file(ifstream &in, const string &file)
{
in.close();
in.clear();
in.open(file);
return in;
}
字符串流
string line,word;
while(getline(cin,line))
{
istringstream stream(line);
while(stream>>word)
cout<<word;
}
写入字符串流
int val1 = 512, val2 = 1024;
ostringstream format_message;
format_message <<"val1"<<val1<<"val2"<<val2;
转换字符串流
istingstream input_istring(format_message.str());
string s1,s2;
input_istring>>s1>>val1>>s2>>val2;
ofstream写操作的文件类由ostream引申而来
ifstream读操作的文件类由istream引申而来
fstream可同时读写操作的文件类由iostream引申而来
ifstream in("tian.txt");//打开一个文件
ifstream in;
in.open("tian.txt",mode);
istream(输入流)类型,提供输入操作
ostream(输出流)类型,提供输出操作
cin:读入标准输入的istream对象
cout:写道标准输出的ostream对象
cerr:输出标准错误的ostream对象
。cerr常用于程序错误信息
getline函数,需要分别取istream类型和string类型的两个引用参数,其功能是从istream对象读取一个单词,然后写入string对象中
io对象不可赋值和复制
文件模式
in打开文件做读操作
out打开文件做写操作
app在每次打开文件前找到文件尾
ate打开文件后立即将文件定位在文件尾
trunc打开文件时清空已存在的文件流
binary以二进制模式进行IO操作
从效果看为ofstream对象制定out操作模式等效于同时指定了out和trunc操作
默认时,与ifstream流对象关联的文件将以in模式打开,该模式允许文件做读的操作;
与ofstream关联的文件则以out模式打开,使文件科协。以out模式打开的文件将被清空,丢弃该文件
要保存ofstream方式打开的文件唯一的方法是显示地制定app模式打开
ofstream appfile("file2",ofstream::app)
fstream默认情况下以in和out模式同时打开,当文件同时以in和out打开时不清空。如果打开fstream所关联的文件时,只使用out模式而不制定in模式,则文件会清空已存在的数据。如果打开文件是制定了trunc模式,则文件一定会被清空
fstream inOut("copyOut",fstream::in|fstream::out);存储的所有数据
文件模式的组合
out 打开文件做写操作,删除文件中已有的数据
out|app打开文件做写操作,在文件尾写入
out|trunc与out模式相同
in打开文件做读操作
in|out打开文件做读、写操作,并定位于文件开头处
in|out|trunc打开文件做读、写操作,删除文件中已经有的数据。
添加上ate只会改变文件打开时的初始位置,第一次读或写之前,将文件定位于文件末尾
一个打开并检查输入文件的程序
ifstream& open_file(ifstream &in, const string &file)
{
in.close();
in.clear();
in.open(file);
return in;
}
字符串流
string line,word;
while(getline(cin,line))
{
istringstream stream(line);
while(stream>>word)
cout<<word;
}
写入字符串流
int val1 = 512, val2 = 1024;
ostringstream format_message;
format_message <<"val1"<<val1<<"val2"<<val2;
转换字符串流
istingstream input_istring(format_message.str());
string s1,s2;
input_istring>>s1>>val1>>s2>>val2;