c++ fstream参数_c++文件流总结(fstream、ofstream、ifstream)

本文介绍了C++中的文件流操作,包括ofstream用于写入,ifstream用于读取,fstream结合两者功能。讲解了ios的各种打开模式,并提供了读写文件的代码示例。对于多行存储,提出了两种解决方案:使用' '或' '作为行结束符。同时,还讨论了读取文件时遇到的乱码问题,可能由文件编码与系统编码不一致引起。
摘要由CSDN通过智能技术生成

c++的文件流包含在与

其中头文件中fstream包含三种数据类型,

ofstream   输出文件流,用于创建文件并且向文件中写入数据

ifstream    输入文件流,用于从文件中读取数据

fstream    文件流,有读写功能,即是以上两个的综合

ios::in

打开文件用于读取。

ios::out

打开文件用于写入。

ios::ate

文件打开后定位到文件末尾。

ios::app

追加模式。所有写入都追加到文件末尾。

ios::binary

二进制方式

ios::trunc

如果文件已存在则先删除该文件

一.先介绍几个函数

1.cin.getline( 参数1 , 参数2 , 参数3 ) ;

参数1 是即将要写入的对象,参数2 是写入的最大长度,参数3是结束字符。

参数2和参数3可缺省。

与getline要区分开,cin.getline服务的是char类型,属于istream流,而getline服务的对象是string类型,是属于string流,两者是不一样的函数。

getline(参数1,cin)         //  参数1 是要写入的对象。

2.cin.ignore()   //函数会忽略掉之前读语句所多余的字符。

二.代码实现

1. 写入文件,可用ofstream / fstream

a.  先声明一个ofstream类型

//    ofstream out;

b. 将该类型与文件名挂钩

//    out.open("地址+文件名",参数);

//此处参数可多选也可缺省,多选情况例如:out.open(“文件”,in | trunc)

c.  正式写入文件

//string str;

//getline1(cin,str);    //读取一行

//out<

d. Close关闭

//out.close();  //关闭与文件联系

1 #include

2 #include

3 #include

4 using namespacestd;5 intmain(){6 //可将声明与文件联系合在一起: ofstream out("data.txt");

7 ofstream out;8 out.open("data.txt");9 stringstr;10 getline(cin,str);11 out<

问题:如何面对多行存储。      在windows中: /r/n才是换行,即:out<

方案1:

1 ofstream out;2 out.open("data.txt");3 stringstr;4 getline(cin,str);5 out<

7 getline(cin,str);8 out<

方案2:(好像\n也可)

1 ofstream out;2 out.open("data.txt");3 stringstr;4 getline(cin,str);5 out<

7 getline(cin,str);8 out<

2. 读取文件,可用ifstream

a)       先声明一个ifstream类型

b)       Ifstream类型与文件名挂钩

c)        正式读取

d)       关闭

读法1:单个读取

1 #include

2 #include

3 #include

4 using namespacestd;5 intmain(){6

7 stringstr;8

9 ifstream in;10

11 in.open("baby.txt");12 in>>str;13 cout<

15 in>>str;16 cout<

18 return 0;19 }

输出结果:

显然这种读法只能单个读取(即:遇见空格 或 换行 结束读入)

读法2:整行读取(使用getline函数)

1 #include

2 #include

3 #include

4 using namespacestd;5 intmain(){6

7 stringstr;8

9 ifstream in;10

11 in.open("baby.txt");12

13 getline(in,str);14 cout<

16 getline(in,str);17 cout<

19 return 0;20 }

运行结果:

如果遇见汉字乱码问题,则是文件编码与系统编码不同而导致的,详情看下链接。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值