C++学习笔记IO库 2 具体流操作(iostream——输入输出流,fstream——文件流)

1、输入输出流 iostream

        输入输出流我们最常用,故就写下列常用输入输出进行简单介绍。

//头文件
#include<iostream>
using namespace std;
int main()
{	
	//向控制台打印
	cout << "hello woeld!" << endl;
	int i;
	//输入一个整型数字
	cin >> i;
	//可以将cin当作判断来使用,被编译器转化为bool型,
	//当输入为0时被转化为false ,输入为其他数字时就被转化为true;
	while (cin >> i)
	{
		cout << " 输入了非零整型数据 :"<< i << endl;
	}
	system("pause");
	return 0;
}

2、文件流 fstream

        文件输入输出,进行文件的操作。进行文件操作要带有:

        头文件#include<fstream>

        fstream头文件中包含读 ifstream, 与写 ofstream , 读写fstream;

创建一个未绑定的文件流

fstream fstrm;  

 创建一个fstream,并打开名为s的文件

fstream fstrm(s);
s 可以是string类型,或者是一个C风格字符串的指针。默认文件模式依赖于fstream的类型;
fstream若是ifstream 默认是读文件;
fstream若是ofstream 默认是写文件;

创建一个带指定模式文件流

fstream fstrm(s,mode);
与前一个构造函数类似,但按指定mode打开文件
fstrm.open(s)打开名为 s 的文件,并将文件与 fstrm 绑定。 s 可以是一个 string 或一个指向C风格字符串的指针。默认的文件mode依赖于 fstream 的类型。

fstrm.close()

fstrm.open(s,mode)

关闭于 fstrm 绑定的文件。

按照mode模式来打开文件 s

fstrm.is_open()返回一个bool值判断文件是否打开成功且尚未关闭。这个这个函数通常用来判断文件是否存在。
fstrm.get()

获取文件的第一个字符,可以用来判断文件是否为空;

fstrm.get() = EOF;    EOF(end of file);

fstrm.eof()判断是否是文件尾,返回一个bool值

文件模式        

in 以读方式打开
out 以写方式打开,以写方式打开文件的时候如果文件不存在会自动创建一个文件
app追加方式打开,每次写操作前均定位到文件尾,追加也就是接着写
ate打开文件立即定位到未见尾
trunc截断文件,也就是先删除再创建
binary

以二进制形式操作

    文件模式可以混合使用,使用时前面加上ios::,打开方式为读且为追加方式。

fstrm.open("文件名字",ios::out|ios::app);

写文件

可以直接利用 << 操作符写文件
fstrm<<"CSDN数据"<<"写呀写"<<endl;

读文件

读文件数据有四种方法
1、
char buf[1024] = {0};
ifs>>buf;
2、利用getline读文件
char buf[1024] = {0};
ifs.getline(buf,sizeof(buf));     
3、
string str;
ifs.getline(ifs,buf);
ifs>>str;
4、
char c;
while((c = ifs.get()) != EOF)
{
    cout<<c;
}

下面写一段代码来理解文件流的具体操作

//头文件
#include<iostream>
#include<fstream>
#include<string>
using namespace std;
int main()
{	
	ofstream ofs;					  //创建一个文件流
	ofs.open("CSDN.txt", ios::out);   //读方式打开,若没有就会自动在文件夹中创建一个文本文件
	if (ofs.is_open())				  //判断文件是否为空
		cout << "文件打开成功!" << endl;
	else
		cout << "文件打开失败!" << endl;
	ofs << "向CSDN中写数据!";	//向文件中写数据
	ofs.close();					  //关闭文件
	ifstream ifs;
	ifs.open("CSDN.txt",ios::in);	  //读方式打开
	if (ifs.is_open())			      //判断文件是否存在
	{
		cout << "文件打开成功!" << endl;
		if (!ifs.eof())		         //判断文件是否为空
		{
			cout << "文件不为空!" << endl;
			string str;
			ifs >> str;				//将数据读出
			cout << str << endl;
		}
		else
			cout << "文件为空!" << endl;
	}
	else
		cout << "文件打开失败!" << endl;
	ifs.close();
	ofs.open("CSDN.txt", ios::out | ios::app); //以读和追加的方式打开
	ofs << "再写点什么!" << endl;
	ofs.close();
	ifs.open("CSDN.txt", ios::in);
	if (ifs.is_open())
	{
		string st1;
		ifs >> st1;      
		cout << st1 << endl;          //如果第一次写入时,填入了换行时就将换行前的数据当作一个string数据
	}
	ifs.close();
	system("pause");
	return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

门三o

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

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

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

打赏作者

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

抵扣说明:

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

余额充值