C++ 文件和流

C++ 文件和流:从入门到精通

摘要:本文将从C++文件和流的基础知识出发,详细介绍文件和流的概念、分类、操作方法以及编程实践。通过阅读本文,读者将能够熟练掌握C++文件和流的使用,为后续编程奠定基础。

一、引言


在计算机编程中,文件和流是不可或缺的概念。文件是存储数据的载体,而流是数据在计算机内部传输的通道。C++提供了丰富的文件和流操作,使得程序员可以方便地读取和写入文件、处理数据。本文将围绕C++文件和流展开讨论,带领读者从入门到精通。

二、文件和流的分类


1. 文件类型

根据文件系统,文件可分为文本文件和二进制文件。

- 文本文件:以字符形式存储数据,可读性较强。文本文件可分为ASCII文件和Unicode文件。

- 二进制文件:以二进制形式存储数据,数据密度较高,但可读性较差。

2. 文件操作模式

根据文件操作模式,文件可分为顺序访问文件、随机访问文件和只读文件。

- 顺序访问文件:按文件中的数据顺序读写,如FIFO(先进先出)队列。

- 随机访问文件:可以直接定位到文件中的任意位置进行读写,如数组。

- 只读文件:只能读取文件内容,不能进行写入操作。

3. 流类型

C++流分为输入流(如cin、ifstream)和输出流(如cout、ofstream)。

三、文件和流的基本操作


1. 打开文件

使用文件流操作前,需要先打开文件。打开文件的方法如下:

ifstream infile("input.txt", ios::in); // 读取文件
ofstream outfile("output.txt", ios::out); // 写入文件
2. 关闭文件

在文件操作完成后,需要关闭文件。关闭文件的方法如下:

infile.close(); // 关闭读取文件
outfile.close(); // 关闭写入文件
3. 读取文件

读取文件的方法如下:

char ch;
infile >> ch; // 逐个字符读取文件
也可以使用如下方法批量读取文件:

string str;
while (infile >> str) {
// 处理读取到的字符串
}
4. 写入文件

写入文件的方法如下:

outfile << "Hello, World!" << endl; // 写入字符串并换行
5. 定位文件指针

文件指针用于定位文件中的位置。以下方法可以实现文件指针的移动:

- seekg(文件指针,偏移量,基准位置)

- tellg(返回当前文件指针位置)

示例:

infile.seekg(0, ios::beg); // 移动到文件开头
infile.tellg(); // 返回当前文件指针位置
6. 判断文件是否结束

在循环读取文件时,可以使用以下方法判断文件是否结束:

if (!infile.eof()) {
// 文件未结束
}
7. 文件长度

获取文件长度的方法如下:

long long size = file.size();

四、实战案例


1. 案例一:读取文件并打印

#include <iostream>
#include <fstream>
#include <string>

int main() {
ifstream infile("input.txt");
string line;
while (getline(infile, line)) {
cout << line << endl;
}
infile.close();
return 0;
}
2. 案例二:写入文件

#include <iostream>
#include <fstream>
#include <string>

int main() {
ofstream outfile("output.txt");
outfile << "Hello, World!" << endl;
outfile << "C++ file and stream learning." << endl
商务合作QQ:2231485359
Copyright © 2021-2023 杭州汇骋科技有限公司. All rights reserved. 浙ICP备15043866号-5 《冰狐智能辅助服务协议》