IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> C++知识库 -> 自考2019版《C++程序设计》04747,第八章 文件操作(附课后习题答案) -> 正文阅读

[C++知识库]自考2019版《C++程序设计》04747,第八章 文件操作(附课后习题答案)

考试题型:主要在选择题、填空题,比分占5%左右。

第一节 文件基本概念和文件流类

1、在C++里,文件操作是通过流来完成的。C++总共又输入文件流、输出文件流和输入输出文件流3种,并已将它们标准化。

要打开一个输入文件流,需要定义一个ifstream类型的对象;

要打开一个输出文件流,需要定义一个ofstream类型的对象;

如果要打开输入输出文件流,则要定义一个fstream类型的对象。

这三种类型都定义在头文件<fstream>里。

2、使用文件流

流类具有支持文件的能力,在建立和使用文件时,就像使用cin和cout一样方便。

可以总结出对文件进行操作的方法如下:

(1)打开一个相应的文件流

(2)把这个流和相应的文件关联起来

因为ifstream、ofstream和fstream这3个类都具有自动打开文件的构造函数,而这个构造函数就具有open()的功能。因此,事实上可以用一条语句:ofstream myStream(“myText.txt”);来完成上述两步。如果指定文件路径,路径中的“\”号必须使用转义字符表示。例如:“\\”表示\

(3)操作文件流

综上所述,流是I/O流类的中心概念。流是一种抽象,它负责再数据的生产者和消费者之间建立联系并管理数据的流动,程序将流对象看做是文件对象的化身。

一个输出流对象是信息流动的目标,ofstream是最重要的输出流。

一个输入流对象是数据流动的源头,ifstream是最重要的输入流。

一个iostream对象可以是数据流动的源或目的,fstream就是从它派生的。


第二节 打开和关闭文件(重点)

1、根据文件中数据的组织形式,可以将文件格式分为文本格式和二进制格式。

cin和cout只能处理C++中以标准设备为对象的输入/输出,而不能处理以磁盘文件为对象的输入/输出。

以下三个为可用于文件操作的文件类:

(1)ifstream,用来支持从磁盘文件的输入;

(2)Ofstream,用来支持向磁盘文件的输出;

(3)fstream类,用来支持对磁盘文件的输入输出;

2、打开磁盘文件

通过创建fstream类对象打开文件fstream<对象名>;

<对象名>.open(“<文件名”,<访问方式(读\写)>);

如果指定文件路径,路径中的“\”号必须使用转义字符表示。

例:

fstream outfile; //dingyi fstream类对象outfile

outfile.open(“f1.dat”,ios::out);

或者合并写成:

fstream outfile(“f1.dat”,ios: :out);? 或者合并写成:fstream outfile(“f1.dat”,ios: :out);

3、文件打开模式标记:

方式

作用

ios : : in

以输入方式(读)打开文件

ios : : out

以输出方式(写)打开文件,如果已有此名字的文件,则将原有内容清除

ios : : app

以输出方式打开文件,写入的数据添加在文件末尾

ios : : ate

打开一个已有的文件,文件指针指向文件末尾

ios : : trunc

打开一个文件,如果文件已存在则删除全部数据,如文件不存在则建立新文件

ios : : binary

以二进制方式打开文件,如不指定此方式则默认为ASCII方式

ios : : in | ios : : out

以输入和输出方式打开文件,文件可读可写

ios : : out | ios : : binary

以二进制方式打开输出文件

ios : : in | ios : : binary

以二进制方式打开输入文件

4、关闭磁盘文件

关闭文件用成员函数close

实际上就是解除该磁盘文件与文件流的关联,不能再通过文件流对该文件进行输入/输出。

格式:<对象名>.close();


第三节 文件读写操作

1、读写文本文件

文本文件中的每一个字节均以ASCII码形式存放数据,即一个字节存放一个字符。可以用一下两种方法对文本文件进行读写操作:

(1)用流插入运算符“<<”和流提取运算符“>>”

(2)用put、get、getline等成员函数进行输入/输出

例: 从键盘输入10个整数到数组,将数组送入磁盘文件。

#include<iostream>

#include<fstream>

Using namespace std;

int main()
{

int a[10];

ofstream outfile(“f1.dat”);? //打开文件

if(!outfile)? //如果打开失败,返回0

{

??????? cerr<<“open error!”<<endl;

??? exit(1);}

cout<<”enter 10 numbers: ”<<endl;

for(int i=0;i<10;i++)

{

??? cin>>a[i];

??? outfile<<a[i]<<” “; } //向文件输出数据

outfile.close();? //关闭磁盘文件

return 0;

}

2、二进制文件的读写操作

同样需要打开和关闭文件

在打开时要用ios: :binary指定为二进制形式。

对二进制文件的读写主要用istream类的成员函数read和write来实现。

例:

写入操作:a.write(p1,40);//将p1指向的单元开始的40个字节内容写到与a关联的磁盘文件中

读取操作:b.read(p2,30);//从b所关联的文件中,读入30个字节,存放在指针p2所指向的一段内存中


第四节 随机访问文件

1、可以随机访问和修改文件中的任意位置上的数据

除了要打开、关闭文件和读写数据之外,还要使用读、写指针在磁盘文件中有一个文件读写位置标记来指明当前应进行读写的位置。

2、有关文件位置标记的成员函数

以g结尾的,表示get,即作为输入;以p结尾的,表示put,即作为输出;

成员函数

作用

gcount( )

得到最后一次输入所读入的字节数

tellg( )

得到输入文件位置标记的当前位置

tellp( )

得到输处文件位置标记的当前位置

seekg(<文件中的位置>)

将输入文件位置标记移动到指定的位置

seekg(<位移量>,<参照位置>)

以参照位置为基础移动若干字节

seekp(<文件中的位置>)

将输出文件位置标记移动到指定的位置

seekp(<位移量>,<参照位置>)

以参照位置为基础移动若干字节

随机文件操作:

<文件中的位置>是相对于文件头的流中位置

<位移量>也是long型字节数

<参照位置>为枚举常量,具有下述含义:

ios: :beg //=0,文件头的位置

ios: :cur //=1,当前标记的位置

ios: :end //=2,文件尾的位置

例:

input.seekg(200); //位置标记向前移动200字节

Input.seekg(100,ios: :beg); //位置标记移动到文件头后100字节处


课后习题答案:

一、选择题

1-5、BBCBD? 6-10、ADBDB? 11-15、ADDAC? 16-17、AD

二、填空题

(1)ostream、iostream、<iostream>? (2)istream、ostream、cerr、clog

(3)ifstream、ofstream、fstream、fstream? (4)fstream.h

(5)ifstream datafile.open("Text.txt");

三、程序分析题

1、

xt1.txt内容:1 2 3 4 5 6 7 8 9 
屏幕输出:
2
4
6
8
9

2、

5,10,15,20,25,30,

四、程序填空题

1、

while((k=inf.get())!=EOF)
close();

2、

!infile
!infile.eof()
infile.get()

  C++知识库 最新文章
【C++】友元、嵌套类、异常、RTTI、类型转换
通讯录的思路与实现(C语言)
C++PrimerPlus 第七章 函数-C++的编程模块(
Problem C: 算法9-9~9-12:平衡二叉树的基本
MSVC C++ UTF-8编程
C++进阶 多态原理
简单string类c++实现
我的年度总结
【C语言】以深厚地基筑伟岸高楼-基础篇(六
c语言常见错误合集
上一篇文章      下一篇文章      查看所有文章
加:2022-03-30 18:05:26  更:2022-03-30 18:05:58 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 2:36:08-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码