当前位置: 首页 > news >正文

如何使用C++进行文件读写操作

在C++中,我们可以使用标准库中的 <fstream>(文件流)来进行文件的读写操作。以下是一些基本的文件读写操作的示例。

读取文件

 

cpp复制代码

#include <fstream>
#include <iostream>
#include <string>
int main() {
std::ifstream file("example.txt"); // 打开文件以进行读取操作
if (file.is_open()) { // 检查文件是否成功打开
std::string line;
while (std::getline(file, line)) { // 逐行读取文件
std::cout << line << '\n'; // 输出每一行
}
file.close(); // 关闭文件
} else {
std::cout << "Unable to open file"; // 如果文件打开失败,输出错误信息
}
return 0;
}

写入文件

 

cpp复制代码

#include <fstream>
#include <iostream>
int main() {
std::ofstream file("example.txt"); // 打开文件以进行写入操作
if (file.is_open()) { // 检查文件是否成功打开
file << "Hello, World!"; // 写入字符串到文件
file.close(); // 关闭文件
} else {
std::cout << "Unable to open file"; // 如果文件打开失败,输出错误信息
}
return 0;
}

追加内容到文件

如果你希望在文件的末尾追加内容,而不是覆盖原有的内容,你可以使用 std::ofstream 的构造函数,并传入 std::ios::app 标志。

 

cpp复制代码

#include <fstream>
#include <iostream>
int main() {
std::ofstream file("example.txt", std::ios::app); // 打开文件以进行追加操作
if (file.is_open()) { // 检查文件是否成功打开
file << "This is appended content."; // 追加字符串到文件
file.close(); // 关闭文件
} else {
std::cout << "Unable to open file"; // 如果文件打开失败,输出错误信息
}
return 0;
}

注意:在使用完文件后,关闭文件是一个好习惯,因为这可以确保所有的数据都被正确地写入磁盘,并释放系统资源。然而,如果你使用的是C++17或更高版本,你可以使用RAII(Resource Acquisition Is Initialization)原则,通过智能指针(如 std::unique_ptr 或 std::shared_ptr)或作用域退出时自动关闭的封装类(如 std::ofstream 的析构函数)来自动管理文件的关闭。在上面的示例中,当 file 变量离开其作用域时,其析构函数会自动关闭文件。

http://www.lryc.cn/news/386078.html

相关文章:

  • Tensorflow Lite移动平台编译
  • 2024年6月24日-6月30日(ue5肉鸽视频p16-p25)
  • LeetCode.面试题17.24.最大子矩阵详解
  • 云动态摘要 2024-06-28
  • 六、资产安全—信息分级资产管理与隐私保护(CISSP)
  • 香港服务器托管对外贸行业必要性和优势
  • Vue Router 导航守卫,多次执行的解决方案
  • SpringBoot集成道历(实现道历日期查询)
  • 面对.rmallox勒索病毒:如何有效防范及应对
  • 嘉立创学习
  • ECharts 响应式设计
  • 基于java语言+springboot技术架构开发的 互联网智能3D导诊系统源码支持微信小程序、APP 医院AI智能导诊系统源码
  • MySQL事务——Java全栈知识(31)
  • 2毛钱不到的2A同步降压DCDC电压6V频率1.5MHz电感2.2uH封装SOT23-5芯片MT3520B
  • Ubuntu安装、更新和删除软件
  • 消息队列kafka中间件详解:案例解析(第10天)
  • Linux高级编程——线程
  • 技术学习的奥秘与乐趣
  • 创新前沿:Web3如何颠覆传统计算机模式
  • 一文弄懂梯度下降算法
  • 确认偏差:金融市场交易中的隐形障碍
  • Linux系统之部署linkding书签管理器
  • springcloud-gateway 路由加载流程
  • 双减期末考试成绩怎么公布?
  • 2, 搭建springCloud 项目 测试demo
  • RabbitMQ消息积压比较厉害,然后突然丢弃
  • QT中的样式表.qss文件
  • HTML图片链接缓存问题解决
  • 一个人 三个月 干了二十万
  • 设计模式之【工厂模式、适配器模式】