新闻详情

新闻详情

首页 / 资讯中心 / 详情

C++实现将内容写入文件的方法总结

发布时间:2026/10/1 12:58:43来源:尧图网络
C++实现将内容写入文件的方法总结
一、C语言输出内容到文件使用 C 的文件 I/O 函数例如 fopen()fprintf()fputs() 和 fwrite() 等。这些函数由 C 语言中的标准库 stdio.h 提供。1234567891011121314151617181920212223242526272829#include stdio.hintmain(){// 以写入模式打开文件FILE*fp fopen(myfile.txt,w);if(fp NULL){// 打开文件失败printf(Error opening file!\n);return1;}// 使用 fprintf() 写入字符串fprintf(fp,Hello, world!\n);// 使用 fputs() 写入字符串fputs(This is another string.\n, fp);// 使用 fwrite() 写入二进制数据intnum 42;fwrite(num,sizeof(int), 1, fp);// 关闭文件fclose(fp);return0;}在这个代码示例中我们首先使用 fopen() 函数以写入模式打开了一个文件然后使用 fprintf()fputs() 和 fwrite() 向文件写入了字符串和二进制数据最后使用 fclose() 函数关闭了文件。请注意在使用 fwrite() 函数写入二进制数据时我们需要提供要写入的数据的指针以及每个数据单元的大小和要写入的数据单元数。二、C文件输入/输出流此种是C标准的输入输出一般不会带来字符种类不同引发的问题比如宽字节和窄字节之间的区别肯能我们打开文件内容都一样但是涉及加密、编码等操作宽窄字符是有区别的这个是有教训的牢记。下面是使用 C 中的文件输入/输出流的代码示例1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950#include fstream#include iostreamintmain(){// 以写入模式打开文件std::ofstream out(myfile.txt);if(!out){// 打开文件失败std::cerr Error opening file! std::endl;return1;}// 使用流操作符 写入字符串out Hello, world! std::endl;out This is another string. std::endl;// 使用 write() 写入二进制数据intnum 42;out.write(reinterpret_castchar*(num),sizeof(int));// 关闭文件out.close();// 以读取模式打开文件std::ifstream in(myfile.txt);if(!in){// 打开文件失败std::cerr Error opening file! std::endl;return1;}// 使用流操作符 读取字符串std::string s;in s;std::cout s std::endl;// 使用 read() 读取二进制数据in.read(reinterpret_castchar*(num),sizeof(int));std::cout num std::endl;// 关闭文件in.close();return0;}在这个代码示例中我们首先使用 ofstream 对象以写入模式打开了一个文件然后使用流操作符 向文件写入了字符串使用 write() 写入了二进制数据最后使用 close() 关闭了文件。然后我们使用 ifstream 对象以读取模式打开了同一个文件使用流操作符 读取了字符串使用 read()读取了二进制数据最后使用 close() 关闭了文件。请注意当使用 write() 写入二进制数据时我们需要将要写入的数据的指针转换为 char* 类型并提供每个数据单元的大小和要写入的数据单元数。当使用 read() 读取二进制数据时我们也需要将要读取的数据的指针转换为 char* 类型并提供每个数据单元的大小和要读取的数据单元数。另一个 C 标准库中的文件输入/输出流类型叫做 filebuf它可以通过标准输入/输出流来读写文件。例如下面是使用 filebuf 的代码示例1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556#include fstream#include iostreamintmain(){// 以写入模式打开文件std::filebuf fb;fb.open(myfile.txt, std::ios::out);if(!fb.is_open()){// 打开文件失败std::cerr Error opening file! std::endl;return1;}// 将文件缓冲区关联到标准输出流std::ostream out(fb);// 使用标准输出流写入字符串out Hello, world! std::endl;out This is another string. std::endl;// 使用 sputn() 写入二进制数据intnum 42;fb.sputn(reinterpret_castchar*(num),sizeof(int));// 关闭文件fb.close();// 以读取模式打开文件fb.open(myfile.txt, std::ios::in);if(!fb.is_open()){// 打开文件失败std::cerr Error opening file! std::endl;return1;}// 将文件缓冲区关联到标准输入流std::istream in(fb);// 使用标准输入流读取字符串std::string s;in s;std::cout s std::endl;// 使用 sgetn() 读取二进制数据fb.sgetn(reinterpret_castchar*(num),sizeof(int));std::cout num std::endl;// 关闭文件fb.close();return0;}在这个代码示例中我们首先使用 filebuf 对象以写入模式打开了一个文件然后将文件缓冲区关联到标准输出流使用标准输出流写入字符串使用 sputn() 写入了二进制数据最后使用 close() 关闭了文件。然后我们使用 filebuf 对象以读取模式打开了同一个文件将文件缓冲区关联到标准输入流使用标准输入流读取字符串使用 sgetn() 读取了二进制数据最后使用 close() 关闭了文件。 请注意当使用 sputn() 写入二进制数据时我们需要将要写入的数据的指针转换为 char* 类型并提供每个数据单元的大小和要写入的数据单元数。当使用 sgetn() 读取二进制数据时我们也需要将要读取的数据的指针转换为 char* 类型并提供每个数据单元的大小和要读取的数据单元数。希望这些代码示例能帮助您理解 C 中的文件输入/输出流的使用方法。三、文件输入/输出流迭代器你是不是曾经有这样的烦恼想将数组或者一堆类型一样的数据写入文件for循环太麻烦。其实要想简单有个前提就是你的数据支持迭代器例如vector这种类型C内部对其实现了迭代功能iterator那么将数据一个一个写入非常方便。在使用文件输入/输出流迭代器之前你需要先包含下面的头文件12#include fstream#include iterator然后你可以使用下面的代码来写入数据到文件这段代码会将 data 中的数据写入到文件 output.txt 中并在每个数据之间添加一个空格1234567std::ofstream out_file(output.txt);std::ostream_iteratorint out_iter(out_file, );std::vectorint data {1, 2, 3, 4, 5};std::copy(data.begin(), data.end(), out_iter);out_file.close();读取文件中的数据也很简单可以使用下面的代码这段代码会从文件 input.txt 中读取数据并将数据存储在 vector 中。文件输入/输出流迭代器很方便因为它们可以像使用普通迭代器一样使用可以很容易地编写模板代码。四、C 中的文件输入/输出流缓冲区首先你需要包含下面的头文件12#include fstream#include iostream接下来你可以使用下面的代码来写入数据到文件1234567std::ofstream out_file(output.txt);std::streambuf* buf out_file.rdbuf();intdata 123;buf-sputn((char*)data,sizeof(int));out_file.close();上面这段代码会将数据 123 写入到文件 output.txt 中。读取文件中的数据也很简单可以使用下面的代码1234567std::ifstream in_file(input.txt);std::streambuf* buf in_file.rdbuf();intdata;buf-sgetn((char*)data,sizeof(int));in_file.close();上面这段代码会从文件 input.txt 中读取一个整数并将它存储在变量 data 中。使用文件输入/输出流缓冲区可以直接操纵底层文件描述符这使得你可以实现更底层的文件操作。但是这也意味着你需要自己处理底层细节比如字节序转换等等小问题。
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

Vue项目创建时npm install失败的8种排查解法与实战指南 2026/10/2 9:45:43

Vue项目创建时npm install失败的8种排查解法与实战指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

阅读更多 →
Excel论文图表从“能看”到“能投”:数据可视化与排版技巧 2026/10/2 9:45:23

Excel论文图表从“能看”到“能投”:数据可视化与排版技巧

做科研写论文的人,大概都经历过这样的时刻:数据好不容易跑完了,对着Excel里密密麻麻的数字却不知道怎么把它变成一张能拿得出手的图,好不容易画出来一张,插进论文里又被导师一句"字体不统一、分辨率太低、图例多余…

阅读更多 →
图计算实战:Neo4j与GraphX选型与混搭架构解析 2026/10/2 9:45:23

图计算实战:Neo4j与GraphX选型与混搭架构解析

做数据分析做得久了,你会发现一个很典型的现象:面对用户关系、交易链路、设备指纹这类数据,SQL和pandas能处理,但处理得很别扭。比如查"张三和李四之间隔了几个人"这种问题,用递归查询或者多次join也能做&am…

阅读更多 →
危险驾驶行为检测:7类动作的多尺度时空建模实战 2026/10/2 9:45:23

危险驾驶行为检测:7类动作的多尺度时空建模实战

简介:本资源是一套基于深度学习的危险驾驶行为实时检测系统Python实现,面向智能交通、ADAS开发及计算机视觉初学者与进阶学习者,解决驾驶员疲劳、分心等7类高危行为(闭眼、张嘴哈欠、吸烟、打电话等)的视频级识别问题。…

阅读更多 →
GPT-Image 2.5实操攻略:12个朋友圈玩法与提示词写作技巧 2026/10/2 9:45:23

GPT-Image 2.5实操攻略:12个朋友圈玩法与提示词写作技巧

最近GPT-Image 2.5的风是真的很大,身边不少朋友都在问这东西到底能干嘛。我本身是个什么都想试试的博主,趁着假期前前后后折腾了好几天,总结了12个我觉得最实用、最容易出效果、也最适合发朋友圈的玩法。这篇文章不聊什么高深原理&#xff0c…

阅读更多 →
三年经验简历包装:技术面试、背调与项目密度解析 2026/10/2 9:45:22

三年经验简历包装:技术面试、背调与项目密度解析

做了几年技术面试官,每年招聘旺季我手里都会收到一批长得几乎一模一样的简历:学历一栏是某个普通院校或者培训班出身,教育经历里挂着一段半年到八个月的"项目实训",紧接着工作经历写着某公司"2021.07—2024.06&quo…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞 ✉