C++ Linux下怎样进行文件操作
在Linux下使用C++进行文件操作
在Linux环境下用C++处理文件,核心工具是标准库里的头文件。它封装了文件输入输出的各类功能,用起来其实相当直观。下面,我们就通过几个典型的场景,来看看具体怎么操作。
免费影视、动漫、音乐、游戏、小说资源长期稳定更新! 👉 点此立即查看 👈

1. 打开文件
第一步自然是打开文件。这里主要用到三个类:std::ifstream(用于读取)、std::ofstream(用于写入)和std::fstream(用于读写)。打开后,务必检查一下是否成功,这是个好习惯。
#include
#include
int main() {
std::ifstream inputFile("example.txt"); // 打开一个用于读取的文件
std::ofstream outputFile("output.txt"); // 打开一个用于写入的文件
std::fstream file("file.txt", std::ios::in | std::ios::out); // 打开一个用于读写的文件
if (!inputFile.is_open()) {
std::cerr << "Unable to open input file";
return 1;
}
if (!outputFile.is_open()) {
std::cerr << "Unable to open output file";
return 1;
}
// 文件操作...
inputFile.close(); // 关闭文件
outputFile.close();
file.close();
return 0;
}
2. 读取文件
文件打开了,怎么把内容读出来呢?对于格式化数据,可以用>>操作符。但更常见的场景是逐行读取文本,这时候std::getline()函数就派上用场了。
std::string line;
while (std::getline(inputFile, line)) {
std::cout << line << std::endl;
}
3. 写入文件
往文件里写数据就简单多了,和使用std::cout向屏幕输出几乎一样,直接用<<操作符就行。
outputFile << "Hello, World!" << std::endl;
4. 检查文件状态
文件操作过程中难免会遇到各种状态,比如读到文件末尾了,或者发生了某些错误。这时候,可以用eof()、fail()、bad()这些成员函数来检查一下。
if (inputFile.eof()) {
std::cout << "Reached end of file." << std::endl;
}
if (inputFile.fail()) {
std::cout << "An error occurred during file reading." << std::endl;
}
5. 关闭文件
文件用完了,记得要关闭。虽然流对象在析构时会自动关闭文件,但显式调用close()是个更清晰、更稳妥的做法,能及时释放系统资源。
inputFile.close();
outputFile.close();
6. 文件指针操作
有时候我们需要在文件里“跳转”,进行随机访问。这就需要操控文件指针了。seekg()用于设置读取位置,seekp()用于设置写入位置。
// 移动到文件的第10个字节
inputFile.seekg(10, std::ios::beg);
// 移动到文件的第20个字节,并准备写入
outputFile.seekp(20, std::ios::beg);
7. 获取文件信息
如果你用的是C++17或更新的版本,那么std::filesystem库会是一个强大的帮手。用它来检查文件是否存在、获取文件大小等信息,代码会简洁很多。
#include
namespace fs = std::filesystem;
if (fs::exists("example.txt")) {
std::cout << "File exists." << std::endl;
}
auto fileSize = fs::file_size("example.txt");
std::cout << "File size: " << fileSize << " bytes" << std::endl;
需要警惕的是,文件操作并非总是顺风顺水,打开失败、读写错误都可能发生。因此,在实际开发中,结合异常处理机制来增强程序的健壮性,是非常有必要的。
以上就是在Linux平台下,使用C++进行文件操作的一套基本“拳法”。当然,根据实际需求,可能还会涉及到更复杂的操作,比如文件的复制、移动或删除等,但掌握了这些核心方法,大部分任务都能应对自如了。
相关攻略
Filebeat跨平台日志收集实践指南 一 架构与关键点 面对混合IT环境,如何用一套工具搞定所有主机的日志收集?Filebeat给出了答案。它提供了覆盖Linux、Windows和macOS的安装包,这意味着,你只需要维护同一套简洁的YAML配置,就能在不同操作系统上实现统一的日志采集与输出。其轻
Filebeat日志压缩与归档实践 说到日志管理,很多朋友会问:Filebeat本身能搞定日志的本地压缩和长期归档吗?答案是,这事儿得分两头看。Filebeat的核心任务是采集和转发,它并不包办所有存储和归档的活儿。一个典型的实践方案是:本地用系统工具处理Filebeat自己的日志,防止磁盘爆满;远
Filebeat故障排查实操手册 日志采集管道卡住了?数据流突然中断?别慌,这往往是Filebeat在“报警”。作为数据管道的第一公里,它的稳定至关重要。下面这份实操指南,能帮你像老手一样,快速定位并解决大多数常见问题。 一、快速定位流程 遇到问题,按这个顺序走一遍,十有八九能找到症结所在。 确认服
Filebeat日志格式自定义指南 一 概念澄清 在动手配置之前,先得把两个容易混淆的概念理清楚: Filebeat自身运行日志:这指的是Filebeat这个“搬运工”自己工作时产生的日志,比如它有没有正常启动、遇到了什么错误。这类日志通常输出到磁盘文件或控制台,方便运维人员排错。你可以选择让它以纯
HDFS 快照使用指南 说到数据备份与恢复,HDFS快照绝对是一个高效且轻量的利器。它本质上就是文件系统在某个特定时刻的“只读照片”,专门用于应对误操作或进行历史状态对比。那么,它到底是怎么工作的?简单来说,有以下几个核心特性: 一 核心概念与适用场景 首先,HDFS快照的创建几乎是瞬间完成的,时间
热门专题
热门推荐
荣耀Magic5录屏录音功能全解析:如何实现专业级音画同步 想在荣耀Magic5上录制带声音的屏幕内容?完全没问题。这款机型的录屏功能不仅支持录音,还给了你充分的选择权:可以只录系统内部播放的声音,比如游戏音效或视频原声;也可以只录制通过麦克风输入的人声解说;或者,两者混合录制,让讲解和演示声音同步
水空调如何更省电、更凉快?关键在于“精准控水、智能调风、协同环境”三位一体 想让水空调既省电又制冷强劲,秘诀不在于把水温调到最低,而在于一套“精准控水、智能调风、协同环境”的科学运行策略。简单来说,就是让水、风和环境三者打好配合。有实测数据表明,当循环水温稳定在7到12度这个“甜区”,配合高效的降温
卡萨帝洗衣机C9错误解析:排水异常背后的安全逻辑 当卡萨帝洗衣机的屏幕上跳出C9代码,很多用户的第一反应是“机器坏了”。其实不然,这恰恰是整机安全保护机制在起作用——它本质上是一个排水异常的硬件级提示。技术手册将其明确归类为“排水 进水时序异常”,意味着系统在脱水结束后,没能按预设剧本走完后续的进水
IH电饭煲煮的饭,真的更香吗? 答案是肯定的。无论是米饭的蓬松度、香气浓郁度、软硬均衡性,还是剩饭二次加热后的口感保持,IH电饭煲的表现通常都优于传统的底盘加热式电饭煲。这背后的核心,是一场从“局部加热”到“立体烹饪”的系统性技术升级。电磁感应技术让内胆自身均匀发热,结合精准的多段温度控制和部分机型
vivo S9恢复出厂设置失败,核心原因与标准处置流程 遇到vivo S9恢复出厂设置失败,先别急着下结论是手机坏了。这事儿,十有八九是操作链上的某个前置条件没达标——比如账户没退干净、电量告急,或者是系统缓存一时“卡了壳”。最稳妥的路径,依然是走系统设置菜单:依次点开【设置】→【系统管理】→【备份





