c++中fstream是什么意思_c++形式参数

c++中fstream是什么意思_c++形式参数初学C++fstream最近出于学习需要,接触了一些C++的程序,对于文件的操作,在C++中的实现方法与C中有些不同,现归纳如下:C++中对文件的操作,是围绕三种类型的文件流(ifstream,ofstream,ftream)进行的.而这三种流事实上是系统定义的类.操作中,首先使流与文件相关联,通过流(也就是类成员)来完成对文件的操作.文件使用完毕,一定要关闭,从而切断流…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

初学C++ fstream

最近出于学习需要, 接触了一些C++的程序, 对于文件的操作, 在C++中的实现方法与C中有些不同,

现归纳如下:

C++中对文件的操作, 是围绕三种类型的文件流(ifstream, ofstream, ftream)进行的. 而这三种流

事实上是系统定义的类. 操作中, 首先使流与文件相关联, 通过流(也就是类成员)来完成对文件的操作.

文件使用完毕, 一定要关闭, 从而切断流与文件的关联, 否则可能会损坏文件.

在程序中要打开一个输入文件流, 对文件进行读操作, 必须说明类型为ifstream对象; 要打开一个输

出文件流, 对文件进行写操作, 必须说明类型为ofstream的对象; 要建立一个输入输出的流, 对文件进行

读写操作, 必须说明一个类型为ftream的对象.

1. 建立一个IO文件流有如下两种方式

1) 通过调用函数open()来实现

fstream test_file;

/** 以读写方式打开argv[1]指定的文件, 并将文件长度截为0*/

test_file.open(test, ios::in | ios::out | ios::trunc);

2) 在创建IO流的同时与文件相关联, 该操作自动打开文件

fstream test_file(test, ios::in | ios::out | ios::trunc);

open()函数的原型为:

void open(const char * szName, int nMode, int nPort = filebuf::openport);

其中第一个参数szName表示相关联的文件名, 第二个参数nMode表示文件的打开方式, 第三个参数

nPort是文件的保护方式, 用户不必理会. 关于第二个参数说明如下:

定义了下列打开模式和文件属性:

ios::app  // 从后面添加

ios::ate  // 打开并找到文件尾

ios::binary  // 二进制模式 I/O (与文本模式相对)

ios::in   // 只读打开

ios::out  // 写打开

ios::trunc  // 将文件截为 0 长度

ios::nocreat // 若文件不存在, 则打开失败

ios::noreplace // 若文件存在, 如果没有设置ate或者app, 那么打开失败

2. 对文件的读写操作

char *str = “hello, world!”;

char buf[100];

1) 对文件的读写, 可以通过write, read实现, 如:

test_file.write(str, strlen(str));

test_file.read(buf, sizeof(buf));

2) 也可以使用C++中的抽取操作符实现, 如:

test_file << str;  // write str to file

test_file >> buf;  // read to buf

3. 移动流的读写位置

移动读写位置可以通过seekg或是seekp实现:

1) test_file.seekg(10, ios::beg);

2) test_file.seekp(10, ios::beg);

seekp(seek put)用于ofstream对象, seekg(seek get)用于ifstream对象. 在fstream对象里, 二者

没有区别.

可以用下面的常量重新定位文件指针(第二个参数):

ios::beg  // 文件开始位置

ios::cur  // 当前位置,例如: ios::cur+5

ios::end  // 文件尾

缺省状态为当前位置.

*博客内容为网友个人发布,仅代表博主个人观点,如有侵权请联系工作人员删除。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/191852.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • How to use SOAP API call SF

    How to use SOAP API call SF(1)DownloadWSDLfilesSetup→API→APIWSDLpage→GenerateEnterpriseWSDLThiswilltakeseveralminutestocreateapage.right-clickthepageandsaveaswsdl.jsp.xmlfileonyourlocallaptop.(2)DownloadSOAPUIOpenSourcefromDownl…

    2022年7月14日
    19
  • 51单片机八路抢答器proteus仿真

    51单片机八路抢答器proteus仿真51单片机八路抢答器由于51单片机小板,按键比较少,还有一些功能上的缺陷,所以说无法完成八路抢答器,所以我们用proteus仿真,代码与实验结果如下:/********************************Function: 八路抢答器Date: Sep20,2017By:Third GroupBolancheL************

    2022年10月20日
    4
  • 设备树详解

    设备树详解在Linux3.x版本后,arch/arm/plat-xxx和arch/arm/mach-xxx中,描述板级细节的代码(比如platform_device、i2c_board_info等)被大量取消,取而代之的是设备树

    2022年6月29日
    27
  • VMware Workstation网络连接的三种方式原理详解 与 配置过程图解

    VMware Workstation网络连接的三种方式原理详解 与 配置过程图解

    2021年10月5日
    43
  • Oracle连接查询,彻底搞懂外连接(左外连接&右外连接)

    Oracle连接查询,彻底搞懂外连接(左外连接&右外连接)Oracle连接查询有3种:交叉连接、内连接、外连接。交叉连接结果是其他连接结果的超集,外连接结果是内连接结果的超集。接下的例子以departments_v、employees_v两个视图数据为例(4条部门数据,9条人员数据)1.交叉连接:又称笛卡尔积连接,是两个或多个表间的无条件连接,因此它会将表1的每一条数据与表2的每一条数据连接,因此结果会有4*9=36条数据

    2022年5月5日
    284
  • TK-MyBatis 分页查询「建议收藏」

    TK-MyBatis 分页查询「建议收藏」记tkMybatis查询出一个 List集合该集合已经做好了一层分页Page封装即查询出的list使用类型判断instanceofPage为true但是,中途不明白这是一个带分页的集合,把查询出的结果集又做了一层封装需要返回的对象类型为GoodsCategoryDTO,代码如下:   //商品集合        List&lt;GoodsCategory…

    2022年6月1日
    201

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号