ofstream 文件大小
时间: 2024-09-02 18:02:20 浏览: 72
ofstream是C++标准库中的一个流对象,它代表了文件输出流。当你使用ofstream操作文件时,通常不会直接获取到文件的大小信息,因为这需要读取整个文件内容才能计算。如果你想要得知文件当前的大小,你需要在每次写入数据之后检查文件指针的位置,然后减去写入前的位置,得到已写入的数据量。然而,这种方式并不高效,因为频繁地移动文件指针会影响性能。
更常见的做法是在关闭文件之前,先将文件指针定位到文件结尾(`file.tellp()`),然后再通过与初始位置进行比较获得文件的总大小。例如:
```cpp
#include <fstream>
#include <iostream>
size_t getFileSize(ofstream& file)
{
if (file.is_open()) {
file.seekg(0, std::ios::end); // 将文件指针移到文件末尾
size_t fileSize = file.tellg(); // 获取当前位置即文件大小
file.seekg(0, std::ios::beg); // 将文件指针还原到开始
return fileSize;
}
else {
throw std::runtime_error("文件未打开");
}
}
int main()
{
ofstream outputFile("example.txt");
// 写入数据...
outputFile.close();
size_t size = getFileSize(outputFile);
std::cout << "文件大小: " << size << "字节" << std::endl;
return 0;
}
```
请注意,这种方法只适用于文本文件,对于二进制文件或压缩文件,可能无法准确反映实际占用存储空间。
阅读全文