您的位置:首页 >Linux C++中文件操作有哪些
发布于2026-04-26 阅读(0)
扫一扫,手机访问
说到在Linux环境下用C++处理文件,开发者手里通常有两把“钥匙”:一把是C++标准库自带的,另一把则是经典的C语言标准I/O库。这两套工具各有各的脾气,用对了地方,文件读写就能变得行云流水。

下面咱们就来详细拆解一下这两套方法的核心操作,看看它们具体怎么用。
:面向对象的优雅之选如果你偏爱C++的面向对象风格,那么会是你的菜。它把文件封装成了流对象,用起来直观又省心。
文件打开
开门第一件事,自然是打开文件。提供了三种流类:
std::ifstream infile("example.txt"); // 专用于读取的文件输入流
std::ofstream outfile("example.txt"); // 专用于写入的文件输出流
std::fstream file("example.txt", std::ios::in | std::ios::out); // 既能读又能写的文件流
检查文件是否成功打开
文件路径不对、权限不足?打开操作可能失败。所以,养成好习惯,先检查一下:
if (!infile.is_open()) {
std::cerr << "Unable to open file for reading!" << std::endl;
}
读取文件
文件打开了,怎么读数据?这里有几种常见姿势:
char ch;
while (infile.get(ch)) {
std::cout << ch;
}
std::getline非常方便。
std::string line;
while (std::getline(infile, line)) {
std::cout << line << std::endl;
}
char buffer[1024];
while (infile.read(buffer, sizeof(buffer))) {
// 处理buffer中的数据
}
写入文件
说完了读,再来看看怎么写。写入同样灵活多样:
std::cout一样自然。
outfile << "Hello, World!" << std::endl;
const char* data = "Some data";
outfile.write(data, strlen(data));
char buffer[1024] = "Some data";
outfile.write(buffer, sizeof(buffer));
关闭文件
好习惯是成功的一半。用完文件,记得显式关闭流,释放资源:
infile.close();
outfile.close();
file.close();
文件指针操作
想在文件里“跳转”吗?通过操作文件指针,你可以轻松定位到任意位置:
infile.seekg(0, std::ios::beg); // 移动到文件开头
infile.seekg(10, std::ios::cur); // 从当前位置向后移动10个字节
infile.seekg(-10, std::ios::end); // 从文件末尾向前移动10个字节
outfile.seekp(0, std::ios::beg); // 移动到文件开头(写入指针)
outfile.seekp(10, std::ios::cur); // 从当前位置向后移动10个字节
outfile.seekp(-10, std::ios::end); // 从文件末尾向前移动10个字节
:经典底层的灵活控制如果你需要更底层的控制,或者项目本身混合了C代码,那么经典的C标准库(在C++中常写作)依然是利器。它的函数式接口非常直接。
文件打开
通过fopen函数,并用模式字符串指定打开方式:
FILE* file = fopen("example.txt", "r"); // 只读打开
FILE* file = fopen("example.txt", "w"); // 只写打开(会清空原文件)
FILE* file = fopen("example.txt", "a"); // 追加模式打开
FILE* file = fopen("example.txt", "r+"); // 读写模式打开
检查文件是否成功打开
fopen失败会返回NULL
if (file == NULL) {
perror("Unable to open file");
return 1;
}
读取文件
fgetc函数。
int ch;
while ((ch = fgetc(file)) != EOF) {
putchar(ch);
}
fgets函数是处理文本行的老朋友。
char line[1024];
while (fgets(line, sizeof(line), file)) {
printf("%s", line);
}
fread是高效的选择。
char buffer[1024];
size_t bytesRead;
while ((bytesRead = fread(buffer, 1, sizeof(buffer), file)) > 0) {
// 处理buffer中的数据
}
写入文件
fprintf和printf用法类似,非常直观。
fprintf(file, "Hello, World!\n");
fprintf。
const char* data = "Some data";
fprintf(file, "%s", data);
fwrite是fread的孪生兄弟,用于二进制写入。
char buffer[1024] = "Some data";
fwrite(buffer, 1, sizeof(buffer), file);
关闭文件
和C++一样,用完记得fclose:
fclose(file);
文件指针操作
在C接口中,使用fseek函数来移动文件指针:
fseek(file, 0, SEEK_SET); // 移动到文件开头
fseek(file, 10, SEEK_CUR); // 从当前位置向后移动10个字节
fseek(file, -10, SEEK_END); // 从文件末尾向前移动10个字节
简单总结一下:C++的提供了更现代、更面向对象的封装,与C++的其他部分(如字符串)集成得更好,写起来往往更简洁。而C的则更为底层和灵活,在某些追求极致性能或需要与大量C代码交互的场景下不可替代。具体选哪套,就得看你的项目需求和个人的编程风格偏好了。
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
正版软件
正版软件
正版软件
正版软件
正版软件
1
2
3
7
9