网站首页 > 基础教程 正文
这里介绍C++读写文件常用的一库两类(one library two classes)。
一库:指的是<fstream>,从库名可以看出是”文件流“的意思。
两类指的是ifstream和ofstream,都是和文件读写相关的类,也可以说是两个流 。
C++语言中,把键盘输入、显示器输出、文件的读写等,都抽象成”流“的概念。
说了这么多,只需要注意一点,这里的文件的库和文件的类,是两个层面的东西,fstream是库层面的东西,对应库里的各种类;而ifstream和ofstream是类层面的东西,对应各自的成员函数和成员变量。
也就是说,要进行文件的读写,就要使用ifstream和ofstream两个常用的类,在程序中就要加一句:#include <fstream>。这就好比C语言编程要用printf()函数时,必须加上#include <stdio.h>,指明函数的出处一样道理。
C++编程一般不建议混合C语言的库及函数,而C++又比C要抽象得多,比如这个读写文件的”流“的概念,就比C语言中文件读写的概念要抽象。因此,为了便于理解,这里总结一下C++文件读写的一般步骤:
1、 声明读写文件的流变量,也就是要创建ifstream/ofstream类的对象。
2、 使用对象的方法open(filename), 来”打开“文件,让文件与创建的对象进行关联。该文件默认与源程序文件处于同一目录下,否则就要包含完整路径。当然,历史原因,文件名filename的格式必须是C风格的字符串,而不是string类风格的,因为string类的出现比较晚。如果文件名是保存在一个string对象中,则需要用c_str( )方法来转换成C风格字符串。
3、 从文件中读或写数据。
4、 关闭文件,解除文件和对象的关联。
下面用代码示范:从硬盘读取一个用户编写的C/C++源文件,并显示在屏幕上。
#include <fstream> //ifstream, ofstream的头文件
#include <iostream> //cout的头文件
#include <string> //getline()的头文件
using namespace std;
int main()
{
ifstream inputFile; //创建一个读文件对象
inputFile.open("C:/C++code/enum.cpp"); //打开一个用户自己写的源文件
string text;
while (!inputFile.eof()) //检测是否到达文件尾部
{
getline(inputFile, text); //从读文件对象(流)中读取一行文本到内存中一个string对象中
cout << text << endl; //把string风格字符串显示到屏幕上
}
inputFile.close(); //关闭文件
return 0;
}
- 上一篇: C++打开NC栅格文件后发现数据异常的解决思路
- 下一篇: 【C++编程语言】之 C++的文件操作
猜你喜欢
- 2024-12-29 Windows 取证之EVTX日志 windows日志文件可以删除吗
- 2024-12-29 C++命名空间,简单整理 c++命名法
- 2024-12-29 C++编程:文件的编译、链接和运行 c++编译链接执行全过程
- 2024-12-29 【项目实战】C++多文件写法轻松实现练手小游戏:贪吃蛇!
- 2024-12-29 c/c++如何避免头文件被多次包含 头文件防止重定义
- 2024-12-29 C++ 20 module小试 c++实验六模板
- 2024-12-29 白话C++编程系列之:多个文件篇 c++多文件编译方法
- 2024-12-29 浅谈linux下进程最大数、最大线程数、进程打开的文件数
- 2024-12-29 C++文件类(文件流类)及用法详解 c++文件流头文件
- 2024-12-29 明明安装了游戏运行库,仍提示缺少C++库文件,现在修复大法来了
- 最近发表
- 标签列表
-
- gitpush (61)
- pythonif (68)
- location.href (57)
- tail-f (57)
- pythonifelse (59)
- deletesql (62)
- c++模板 (62)
- css3动画 (57)
- c#event (59)
- linuxgzip (68)
- 字符串连接 (73)
- nginx配置文件详解 (61)
- html标签 (69)
- c++初始化列表 (64)
- exec命令 (59)
- canvasfilltext (58)
- mysqlinnodbmyisam区别 (63)
- arraylistadd (66)
- node教程 (59)
- console.table (62)
- c++time_t (58)
- phpcookie (58)
- mysqldatesub函数 (63)
- window10java环境变量设置 (66)
- c++虚函数和纯虚函数的区别 (66)