发布于2026-06-29 阅读(0)
扫一扫,手机访问
在Ubuntu环境下用C++操作文件,几乎是每个开发者都会遇到的需求。标准库中的头文件提供了足够简洁的接口,配合C++17引入的,日常的读写、追加、检查存在等操作都能轻松搞定。下面直接上代码,一边跑一边讲,这样更实在。

首先得把文件“请”进来。用std::ifstream创建输入流对象,传一个文件名给它就行。记得检查是否真的打开了——如果文件不存在或者权限不够,流对象会抛出一个失败状态,捕获它总没错。
#include
#include
int main() {
std::ifstream inputFile("example.txt");
if (!inputFile.is_open()) {
std::cerr << "Unable to open file for reading!" << std::endl;
return 1;
}
// 文件操作代码...
inputFile.close();
return 0;
}
写入就反过来,用std::ofstream。默认模式是覆盖写,如果文件已经存在,内容会被清空。这里演示一行“Hello, World!”,用流操作符直接插入,方便得很。
#include
#include
int main() {
std::ofstream outputFile("output.txt");
if (!outputFile.is_open()) {
std::cerr << "Unable to open file for writing!" << std::endl;
return 1;
}
outputFile << "Hello, World!" << std::endl;
outputFile.close();
return 0;
}
不想覆盖原内容?那就在打开时加上std::ios::app标记。这样写入的内容会从文件末尾开始追加,原始数据纹丝不动。
#include
#include
int main() {
std::ofstream outputFile("output.txt", std::ios::app);
if (!outputFile.is_open()) {
std::cerr << "Unable to open file for appending!" << std::endl;
return 1;
}
outputFile << "Appended text." << std::endl;
outputFile.close();
return 0;
}
读取最常用的方式就是逐行处理。用std::getline循环取行,直到文件结束。每行拿到后可以输出到控制台,也可以做进一步解析。注意文件读取结束后流对象会自动进入失败状态,循环会自然退出。
#include
#include
#include
int main() {
std::ifstream inputFile("example.txt");
if (!inputFile.is_open()) {
std::cerr << "Unable to open file for reading!" << std::endl;
return 1;
}
std::string line;
while (std::getline(inputFile, line)) {
std::cout << line << std::endl;
}
inputFile.close();
return 0;
}
有时你需要在操作前先确认文件是否真实存在。C++17的库提供了fs::exists方法,简单高效。注意,编译时记得带上-std=c++17标志。
#include
#include
namespace fs = std::filesystem;
int main() {
if (fs::exists("example.txt")) {
std::cout << "File exists." << std::endl;
} else {
std::cout << "File does not exist." << std::endl;
}
return 0;
}
使用g++编译时,像这样启用C++17标准:
g++ -std=c++17 your_program.cpp -o your_program
以上覆盖了Ubuntu上C++文件操作最核心的几个场景。当然,实际项目中可能还需要处理二进制文件、随机读写、错误码细化等高级特性,但掌握了这些基础逻辑,你已经能应对大部分日常需求了。
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
正版软件
正版软件
正版软件
正版软件
正版软件
1
2
3
7
8