文件流就是将流与文件进行绑定,读写文件。字符串流就是将流与字符串进行绑定,读写字符串。
文件流类有ifstream,ofstream和fstream,而字符串流类有istrstream,ostrstream和strstream。文件流类和字符串流类都是ostream,istream和iostream类的派生类,因此对它们的操作方法是基本相同的。
以下以实例说明文件流的使用方法:
#include "stdafx.h"
#include <string>
#include <iostream>
#include <fstream>
using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{
/***IO标准库使用C风格的字符串而不是C++(string)风格的字符串,故要调用c_str()函数。***/
//定义流,并绑定相应的文件,如果文件不存在会创建文件 1---------
string strfilein = "1.txt",strfileout = "2.txt";
//定义读入流并绑定文件,作用:将文件中的数据读入到string等
ifstream infile(strfilein.c_str(),ifstream::in|ifstream::binary);
//定义写入流并绑定文件,作用:将string的数据读入到文件等
//指定app模式,这样打开文件后,文件中原有的数据就不会被删除
ofstream outfile(strfileout.c_str(),ofstream::out|ofstream::app);
//定义流,并绑定相应的文件,如果文件不存在会创建文件 2---------
string strfilein1 = "3.txt",strfileout1 = "4.txt";
ifstream infile1; //定义读入流
ofstream outfile1; //定义写入流
infile1.open(strfilein1.c_str());//读入流绑定文件,使用文件默认的模式
outfile1.open(strfileout1.c_str());//写入流绑定文件,使用文件默认的模式
//判断文件打开是否成功----------------------
if(!infile)
{
cout<<"打开文件失败:infile"<<endl;
infile.close(); //关闭流并不能清空流的内部状态
infile.clear();//清空流的内部状态
}else{
cout<<"打开文件成功:infile"<<endl;
}
if(!outfile)
{
cout<<"打开文件失败:outfile"<<endl;
outfile.close(); //关闭流并不能清空流的内部状态
outfile.clear();//清空流的内部状态
}else{
cout<<"打开文件成功:outfile"<<endl;
}
if(!infile1)
{
cout<<"打开文件失败:infile1"<<endl;
infile1.close(); //关闭流并不能清空流的内部状态
infile1.clear();//清空流的内部状态
}else{
cout<<"打开文件成功:infile1"<<endl;
}
if(!outfile1)
{
cout<<"打开文件失败:outfile1"<<endl;
outfile1.close(); //关闭流并不能清空流的内部状态
outfile1.clear();//清空流的内部状态
}else{
cout<<"打开文件成功:outfile1"<<endl;
}
//将 infile 与新文件重新绑定-----------------
infile.close();//首先关闭infile
infile.clear();//清空内部状态
infile.open("5.txt");//然后绑定
//-------------------------------------------------
string strcontent;
while (!infile.eof())
{
infile >> strcontent;//遇到 空格\t、回车\n 结束输入
//getline(infile,strcontent);//一次读取文件中的一行
outfile << strcontent;//写入到文件里
}
return 0;
}