零基础学C++之高级篇四

本文介绍了C++中文件操作的详细内容,包括流的概念、文件打开方式、文件读写、文件指针移动以及文件的删除。讲解了流类库的使用、IOS类中的枚举类型,并通过实例展示了如何进行文本和二进制文件的读写以及文件复制操作。
摘要由CSDN通过智能技术生成

零基础学C++之高级篇四

文件操作

文件操作是程序开发中不可缺少的一部分,任何需要数据存储的软件都需要进行文件操作,文件操作包括打开文集、读文件和写文件,掌握读文件和写文件的同时,还要理解文件指针的移动,才能控制读写文件的位置。

流简介

C++中的流类库

C++语言中为不同类型数据的标准输入和输出定义了专门的类库,类库主要有ios、istream、ostream、iostream、ifstream、ofstream、fstream、istrstream、ostrstream、strstream等类。ios为根基类,它直接派生输入流类istream、输出流类ostream、文件流基类fstreambase、字符串流基类strstreambase。输入文件流类ifstream同时继承了输入流类和文件流基类,输出文件流类ofstream同时继承了输出流类和文件流基类,输入字符串流类istrstream同时继承了输入流类和字符串基类,输出字符串流类istrstream同时继承了输出流类和字符串基类,输入输出流类iostream同时继承了输入流类和输出流类,输入输出文件流类fstream同时继承了输入输出流类和文件流基类,输入输出字符串流类strstream同时继承了输入输出流类和字符串流基类。类库关系如图所示:
在这里插入图片描述

类库的使用

C++系统中的I/O标准类,都定义在iostream.h、fstream.h和strstream这3个头文件中,各头文件包含的类如下:
进行标准I/O操作时使用iostream.h头文件,它包含有ios、iostream、istream、ostrean等类;
进行文件I/O操作时使用fstream.h头文件,它包含有fstream、ifstream、ofstream、fstreambase等类;
进行文件I/O操作时使用strstream.h头文件,它包含有strstream、istrstream、ostrstream、strstreambase、iostream等类;
要进行什么样的操作,只要引入头文件就可以使用类进行操作了。

IOS类中的枚举类型

enum{skipws,left,right,insternal,dec,oct,hex,showbase,showpoint,uppercase,showpos,scientific,fixed,unitbuf,stdio}

主要枚举常量的含义如下:
skipws:利用它设置对应标志后,从流中输入数据时跳过当前位置及后面的所有连续的空白字符,从第一个非空白字符起读数,否则不跳过空白字符。空格、制表符、回车符和换行符统称为空白符。
left:靠左对齐输出数据
right:靠右对齐输出数据
insternal:显示占满整个域宽,用填充字符在符号和数字之间填充。
dec:十进制输出
hex:十六进制输出
showbase:在数值前显示基数符
showpoint:强制输出的浮点数中带有小数点和小数尾部的无效数字0
uppercase:大写输出
showpos:在数值前显示符号
scientific:用科学记数法显示浮点数
fixed:用固定小数点位数显示浮点数

流的输入/输出

实例01 使用流进行输出

#include <iostream>
#include <strstream>
void main()
{
   
	char buf[]="12345678";
	int i,j;
	istrstream s1(buf);
	s1 >> i;
	istrstream s2(buf,3);
	s2 >> j;
	cout << i+j << endl;
}

文件打开

打开方式

只有使用文件流与磁盘上的文件进行连接后才能对磁盘上的文件进行操作,这个连接过程称为打开文件。打开文件的方式有以下两种:
(1)在创建文件流时利用构造函数打开文件,即在创建流时加入参数,语法如下:

<文件流类> <文件流对象名> (<文件名>,<打开文件>)

其中文件流类可以是fstream、ifstream和ofstream中的一种。文件名指的是磁盘文件的名称,包括磁盘文件的路径名。打开方式在ios类中定义,有输入方式、输出方式、追加方式等,如下:
ios::in:用输入方式打开文件,文件只能读取,不能改写;
ios::out:以输出方式打开文件,只能改写,不能读取;
ios::app:以追加方式打开文件,打开后文件指针在文件尾部,可改写;
ios::ate:打开已存在的文件,文件指针指向文件尾部,可读可写;
ios::binary:以二进制方式打开文件;
ios::trunc:打开文件进行写操作,如果文件已经存在,清除文件中的数据;
ios::nocreate:打开已经存在的文件,如果不存在,打开失败,不创建;
ios::noreplace:创建新文件,如果文件已经存在,打开失败,不覆盖;
参数可以结合运算符“|”使用,如:
ios::in|ios::out:以读写方式打开文件,对文件可读可写;
ios::in|ios::binary:以二进制方式打开文件,进行读操作。

ofsteam outfile(“test.txt”,ios::out);

(2)利用open函数打开磁盘文件,结构语法如下:

<文件流对象名>.open(<文件名>,<打开方式>)
ifstream infile;
infile.open(“test.txt”,ios::out);

默认打开方式

如果没有指定打开方式参数,编译器会使用默认值。

std::ofstream std::ios::out | std::ios::trunc
std::ifstream std::ios::in
std::fstream 无默认值

打开文件同时创建文件

实例02 创建一个文件

#include <iostream>
#include <fstream>
using namespace std;
int main()
{
   
	ofstream ofile;
	cout << "Create file1" <<endl;
	ofile.open("test.txt");
	if(!ofile.fail())
	{
   
		ofile << "name1" << " ";
		ofile << "sex1" << " ";
		ofile << "age1" << " ";
		ofile.close();
	
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值