C++语言-06-文件操作
C语言文件操作
C++语言是C语言的超集,是在C语言的基础上增加了面向对象的特性而创造出来的,最初被命名为带类的C。所以C++语言中包含了C语言的思想,如:C++语言中文件操作的原理与步骤与C语言基本相同,请对比C语言中的文件操作,来学习和理解C++中的文件操作。以下是C语言文件操作的Blog连接:
C++语言文件操作
C++语言中标准库fstream,提供了有关文件操作所需的条件。
与文件操作相关的数据类型
- ifstream
- 输入文件流,用于从文件读取信息
- 使用其对象打开文件时,默认为:ios::in
- ostream
- 输出文件流,用于创建文件(若关联的文件不存在)并向文件写入信息
- 使用其对象打开文件时,默认为:ios::out
- fstream
- 文件流,具备ifstream与ostream的功能
- 使用其对象打开文件时,默认为:ios::in | ios::out
- ifstream
文件的打开模式
标志 含义 ios::app 追加模式,将所有写入的内容追加到文件末尾 ios::ate 文件打开后定位到文件末尾 ios::in 打开文件用于读取 ios::out 打开文件用于写入 ios::trunc 若文件已经存在,其内容将在打开文件之前被截断,即把文件长度设为0(文件内容会被清空) 文件操作的步骤
打开文件,可以使用以下函数打开文件:
// 使用char类型字符串指定文件名和位置
void open(const char* __s, ios_base::openmode __mode = ios_base::in | ios_base::out)
// 使用string类型字符串指定文件名和位置
void open(const string& __s, ios_base::openmode __mode = ios_base::in | ios_base::out)
操作文件
读取文件
// 使用流提取运算符 >>,读取到空格时会结束
// 使用 get() 函数
basic_istream& get(char_type* __s, streamsize __n);
// 使用 getline() 函数
basic_istream& getline(char_type* __s, streamsize __n);
// 使用 read()
basic_istream& read (char_type* __s, streamsize __n);
// 使用 readsome() 函数, 注意函数的返回值类型不是 basic_istream&
streamsize readsome(char_type* __s, streamsize __n);
写入文件
// 使用流插入运算服务 <<
// 使用 put() 函数,一次只能写入一个字符
basic_ostream& put(char_type __c);
// 使用 write() 函数
basic_ostream& write(const char_type* __s, streamsize __n);
关闭文件
// 使用 close() 函数
void close();
文件位置重定位
查找方向
标志 含义 ios::beg 默认的方向,从流的开头开始定位 ios::cur 从流的当前位置开始定位 ios::end 从流的末尾开始定位 文件位置重定位相关的函数
输入流相关
// __pos 指定位置,查找方向为默认方向:从流的开头开始向后定位。即:定位到流的第 __pos 个字节
basic_istream& seekg(pos_type __pos);
// __off 指定偏移量,__dir 指定查找方向。即:按 __dir 指定的查找方向偏移 __off 字节
basic_istream& seekg(off_type __off, ios_base::seekdir __dir);
输出流相关
// __pos 指定位置,查找方向为默认方向:从流的开头开始向后定位。即:定位到流的第 __pos 个字节
basic_ostream& seekp(pos_type __pos);
// __off 指定偏移量,__dir 指定查找方向。即:按 __dir 指定的查找方向偏移 __off 字节
basic_ostream& seekp(off_type __off, ios_base::seekdir __dir);
示例
读取文件
void readFromFile() {
// 创建一个字符数组,用于暂存用户输入的数据
char data[50];
// 打开文件(以读模式打开文件)
ifstream inputFile;
inputFile.open("/Users/mac/Desktop/HelloWorld.txt");
// 将文件的读指针从开始位置向后移动 6 个字节,即:从文件的第 6 个字节开始读取文件的内容
inputFile.seekg(6, ios::beg);
// 读取文件的内容
cout << "Reading from the file" << endl;
// 使用 read()函数读取文件内容到 data 中
inputFile.read(data, 50);
cout << data << endl;
// 关闭打开的文件
inputFile.close();
}
写入文件
void writeToFile() {
// 创建一个字符数组,用于暂存从文件读取的数据
char data[50];
// 打开文件(以写模式打开文件)
ofstream outputFile;
outputFile.open("/Users/mac/Desktop/HelloWorld.txt");
// 输入要写入文件的内容
cout << "Writing to the file" << endl;
cout << "Input a message:" << endl;
cin.getline(data, 50);
// 使用 write() 函数,将data数据写入到文件中
outputFile.write(data, 50);
// 关闭打开的文件
outputFile.close();
}
main函数
int main(int argc, const char * argv[]) {
// 写入文件
writeToFile();
// 读取文件
readFromFile();
return 0;
}
运行结果如图

C++语言-06-文件操作的更多相关文章
- C语言之文件操作08——总结
C程序的文件操作共涵盖7个例题,包括格式打印,文件读取,条件查找,矩阵的文件操作,数据格式输入及调用计算等内容. 文件操作使得程序有更强的拓展性,使其能够单独保存数据.这为程序的调试和优化打下了坚实的 ...
- C语言程序设计--文件操作
前言 这里尝试与Python对别的方法来学习C语言的文件操作,毕竟我是Pythoner. 文件打开与关闭 Python #因为是和C语言比对,所以不使用with filename = "/e ...
- C语言之文件操作
C语言之文件操作 在本节我们将会讲解有关文件的读写操作: 纲要: 一些需要掌握的知识点 文件名 文件类型 数据流 文件缓冲区 文件指针 与文件操作相关的一些函数 文件的打开及关闭 文件的顺序读写 文件 ...
- c语言_文件操作_FILE结构体解释_涉及对操作系统文件FCB操作的解释_
1. 文件和流的关系 C将每个文件简单地作为顺序字节流(如下图).每个文件用文件结束符结束,或者在特定字节数的地方结束,这个特定的字节数可以存储在系统维护的管理数据结构中.当打开文件时,就建立了和文件 ...
- c语言,文件操作总结
C语言文件操作 一.标准文件的读写 1.文件的打开 fopen() 文件的打开操作表示将给用户指定的文件在内存分配一个FILE结构区,并将该结构的指针返回给用户程序,以后用户程序就可用此FILE指针来 ...
- C语言的文件操作
在操作系统中,为了统一对各种硬件的操作,简化接口,不同的硬件设备也被看成一个文件.对于这些文件的操作,等于是对普通文件的操作.例如,通常把显示器称为标准输出文件,printf就是想这个文件输出,把键盘 ...
- C#语言-07.文件操作
a. 文件操作:适用于相对简单的数据保存 i. 读写文件的步骤: . 创建文件流 . 创建读写器 . 读写文件 . 关闭读写器 . 关闭文件流 ii. FileStream(文件流),它主要用于读写文 ...
- C语言之文件操作06——写数据到文本文件遇0停止
//文件 /* =============================================================== 题目:输入10个篮球运动员的身高数据(cm)保存至D盘文 ...
- Linux下C语言的文件操作
代码: #include <stdio.h> #include <string.h> #include <fcntl.h> /*************基本的函数A ...
- 超赞的 Go 语言 INI 文件操作
灵活的数据源 不光光可以从文件读取配置,还支持 []byte 类型的纯数据读取和基于 io.ReadCloser 的流式读取. 多种格式兼容 各种文件种类的广泛支持,包括但不限于 my.cnf..gi ...
随机推荐
- 全动态Portlet点击后选中样式
1 背景概述 在配置公司云平台的帮助信息过程中,由于使用的全动态portlet的数据URL获取到的是静态数据,没有办法在后台做选中的逻辑判断,所以需要在前台来控制选中列表的样式,这里将对前台选中列表 ...
- 15天玩转redis —— 第二篇 基础的字符串类型
我们都知道redis是采用C语言开发,那么在C语言中表示string都是采用char[]数组的,然后你可能会想,那还不简单,当我执行如下命令,肯定是直 接塞给char[]数组的. 如果你真的这么想的话 ...
- jquery层级原则器(匹配后代元素div)
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- 两个与spring事务相关的问题
有些spring相关的知识点之前一直没有仔细研究:比如spring的事务,并不是没有使用,也曾经简单的在某些需要事务处理的方法上通过增加事务注解来实现事务功能,仅仅是跟随使用(甚至并未测试过事务的正确 ...
- 参数化命令相关知识点之==================防止SQl的注入
一: 使用参数化命令查询DAL类: public DataTable StudentDAL(string name,string gender) { string str="连接字符串&qu ...
- knockout源码分析之computed(依赖属性)
一.序列图 二.主要代码文件 1.dependentObservable.js:主要包含ko.computed相关方法的处理2.dependencyDetection.js:主要包含依赖的监控上下文对 ...
- jPList – 实现灵活排序和分页功能的 jQuery 插件
jPList 是一个灵活的 jQuery 插件,可以用于任何 HTML 结构的排序,分页和筛选.它支持的数据源包括:PHP + MySQL,ASP.NET + SQL Server,PHP + SQL ...
- browser.html – HTML 实现 Firefox UI
browser.html 是一个实验性的项目,用于证明一个概念:使用 HTML 重新实现 Firefox UI ,并作为一个应用程序.它是基于浏览器的 API ,并以浏览器的方式和系统的应用工作.即使 ...
- Web 开发中应用 HTML5 技术的10个实例教程
HTML5 作为下一代网站开发技术,无论你是一个 Web 开发人员或者想探索新的平台的游戏开发者,都值得去研究.借助尖端功能,技术和 API,HTML5 允许你创建响应性.创新性.互动性以及令人惊叹的 ...
- (转)轻松学习JavaScript三:JavaScript与HTML的结合
摘自:http://blog.csdn.net/erlian1992 HTML中的JavaScript脚本必须位于<script>与</script>标签之间,JavaScri ...