在C++中获取文件大小有多种方法,常用的方式包括使用标准库中的 std::filesystem::file_size 函数(C++17起支持)和通过文件流结合 seekg 与 tellg 进行定位计算。下面分别介绍这两种主流方法。
示例代码:
#include注意:编译时需要启用 C++17 或更高版本,并链接 stdc++fs(部分编译器如 g++ 需添加 -lstdc++fs)。#include int main() { const char* filename = "example.txt"; if (std::filesystem::exists(filename)) { std::uintmax_t size = std::filesystem::file_size(filename); std::cout << "文件大小: " << size << " 字节" << std::endl; } else { std::cout << "文件不存在" << std::endl; } return 0; }
示例代码:
#include关键点说明:#include long getFileSize(const char* filename) { std::ifstream file(filename, std::ios::binary | std::ios::ate); if (!file.is_open()) { return -1; // 打开失败 } long size = file.tellg(); // 当前位置即文件末尾偏移量 file.close(); return size; }
int main() { long size = getFileSize("example.txt"); if (size != -1) { std::cout << "文件大小: " << size << " 字节" << std::endl; } else { std::cout << "无法打开文件" << std::endl; } return 0; }
_size 更现代、简洁,适合新项目;但需注意兼容性。基本上就这些。选择哪种方式取决于你的编译环境和项目要求。如果条件允许,优先使用 std::filesystem::file_size,代码更清晰安全。