文件流fstream和字符串流sstream的使用

文件流就是将流与文件进行绑定,读写文件。字符串流就是将流与字符串进行绑定,读写字符串。

文件流类有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;
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小米的修行之路

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值