C++ 文件流笔记

除了继承自 iostream 类型的行为之外,fstream 中定义的类型还增加了一些新的成员来管理与流相关的文件。我们可以对 fstream,ifstream 和 ofstream 对象调用这些操作,但不能对其他 IO 类型调用这些操作:

	fstream fstrm;//创建一个未绑定的文件流.fstream是头文件fstream中定义的一个类型
    fstream fstrm1(s);//创建一个fstream,并打开名未s的文件.s可以是string类型或者是一个指向c风格字符串的指针.这些构造函数都是explicit的。默认的文件模式mode依赖于fstream的类型
    fstream fstrm2(s, mode);//与前一个构造函数类似,但指定mode打开文件
    fstrm.open(s);//打开名为s的文件,并将文件与fstrm绑定.s可以是一个string或一个指向c风格字符串的指针.默认的文件mode依赖于fstream的类型.返回void
    fstrm.close();//关闭fstrm绑定的文件.返回void
    fstrm.is_open();//返回一个bool值,指出与fstrm关联的文件是否成功打开且尚未关闭
使用文件流对象:

ifstream in(ifile);//构造一个ifstram并打开给定文件
ofstream out;//输出文件流未关联到任何文件

#include<bits/stdc++.h>
using namespace std;
string filename = "C:\\Users\\xizu_ghq\\Desktop\\pre.txt";
string filename1=   "C:\\Users\\xizu_ghq\\Desktop\\out.txt";
int main(){
    ifstream file(filename);//打开一个文件,然后输入
    ofstream outfile(filename1);
    string name;
    while(file>>name) outfile<<name<<endl;
    file.close();
    outfile.close();
    return 0;
}
文件模式

每个流都有一个关联的文件模式,用来指出如何使用文件:
in      以读方式打开
out     以写方式打开(以out打开的文件隐含被截断,要使不被截断,就要同时指定app模式。)
app     每次写操作前均定位到文件末尾
ate      打开文件后立即定位到文件末尾
trunc     截断文件(也就是:如果打开的文件存在,其内容将被丢弃,其大小被截断为零)
binary     以二进制方式进行IO

  • 指定文件模式有如下限制:

1.只可以对 ofstream 或 fstream 对象设定 out 模式。

2.只可以对 ifstream 或 fstream 对象设定 in 模式。

3.只有当 out 也被设定时才可以设定 trunc 模式。

4.只要 trunc 没被设定,就可以设定 app 模式。在 app 模式下,即使没有显示指定 out 模式,文件也总是以输出方式被打开。

5.默认情况下,即使我们没有指定 trunc,以 out 模式打开的文件也会被截断。为了保留以 out 模式打开的文件内容,我们必须同时指定 app 模式,这样才会以追加的模式写到文件末尾:或者同时指定 in 模式,即打开文件同时进行读写操作。

6.ate 和 binaty 模式可用于任何类型的文件流对象,且可以与其他任何文件模式组合使用。

每个文件流类型都定义了一个默认的文件模式,当我们未指定文件模式时,就使用此默认模式。ifsream 关联的文件默认以 in 模式打开,ofstream 关联的文件默认以 out 模式打开,fstream 关联的文件默认以 in 和 out 模式打开。

#include<bits/stdc++.h>
using namespace std;
int main(){
    //三个打开文件,但是不能保留文件内容的打开方式
    ofstream out1("C:\\Users\\xizu_ghq\\Desktop\\pre.txt");//打开并截断文件
    ofstream out2("C:\\Users\\xizu_ghq\\Desktop\\pre.txt",ofstream::out);//同上,隐含的截断文件。
    ofstream out3("C:\\Users\\xizu_ghq\\Desktop\\pre.txt",ofstream::out | ofstream::trunc);

    //为了保留文件内容,显式指定app模式
    ofstream app1("C:\\Users\\xizu_ghq\\Desktop\\pre.txt",ofstream::app);//隐含的输出模式
    ofstream app1("C:\\Users\\xizu_ghq\\Desktop\\pre.txt",ofstream::app|ofstream::out);//输出模式+追加模式
    return 0;
}
注意:保留ofstream打开文件中已有数据的唯一方法是同时指定in或者app模式
#include<bits/stdc++.h>
using namespace std;
int main(){
    ofstream out;
    out.open("C:\\Users\\xizu_ghq\\Desktop\\pre.txt");//默认指定out+trunc
    out.close();
    out.open("C:\\Users\\xizu_ghq\\Desktop\\pre.txt",ofstream::app);//保留已有数据
    return 0;
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,我会为您提供一份细致的C++知识笔记,希望对您有所帮助。 1. C++语言概述 C++是一种面向对象的编程语言,它是C语言的扩展版本。C++可以用于开发各种类型的应用程序,包括操作系统、驱动程序、游戏、桌面应用程序、移动应用程序、Web应用程序等等。 2. C++基础语法 C++程序由函数组成,每个函数由一系列语句组成。C++程序从main函数开始执行,然后按照顺序执行函数中的语句。C++程序由头文件、全局变量、函数和类组成。头文件包含了程序所需的库函数和类定义。 3. C++数据类型 C++支持多种数据类型,包括整型、浮点型、字符型、布尔型等。整型数据可以是有符号或无符号的,浮点型数据可以是单精度或双精度的。C++还支持枚举类型和指针类型。 4. C++运算符 C++支持多种运算符,包括算术运算符、比较运算符、逻辑运算符、位运算符等。算术运算符包括加、减、乘、除等。比较运算符包括等于、大于、小于等。逻辑运算符包括与、或、非等。 5. C++ C++是一种输入/输出机制,用于从文件、内存或其他设备中读取和写入数据。C++由输入和输出组成,输入用于读取数据,输出用于写入数据。C++还支持格式化的输入/输出,可以按照特定的格式读取或写入数据。 6. C++函数 C++函数是一段可重用的代码,用于完成特定的任务。函数由函数名、参数列表和函数体组成。C++函数可以返回一个值或不返回任何值。函数可以被调用多次,可以在函数内部调用其他函数。 7. C++C++类是一种用户定义的数据类型,它封装了数据和函数。类具有属性和方法,属性表示数据,方法表示函数。C++类可以被继承,可以派生出新的类。C++类还支持多态性,可以使用相同的接口处理不同的数据类型。 8. C++异常处理 C++异常处理是一种处理程序错误的机制,用于在程序运行时捕获和处理异常。C++异常处理由try、catch、throw语句组成。try语句用于尝试执行一段代码,如果出现异常,则由catch语句捕获并处理异常。throw语句用于抛出异常。 以上是C++的基础知识,还有很多高级特性和应用场景需要学习和掌握。希望这份笔记能够帮助您更好地理解C++语言。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值