c++的fstream已经读取,其大小是否可知
时间: 2024-02-25 13:55:48 浏览: 66
如果你已经从 `fstream` 中读取了数据,那么你可以使用 `gcount()` 函数来获取最后一次读取的字节数。但是需要注意的是,这个函数只能获取最后一次读取操作的字节数,因此如果你进行了多次读取操作,需要累加每次读取的字节数才能得到正确的结果。
示例代码如下:
```c++
#include <iostream>
#include <fstream>
#include <cstring>
int main() {
std::ifstream ifs("example.txt", std::ios::binary);
if (!ifs) {
std::cerr << "Failed to open file!" << std::endl;
return -1;
}
char buffer[1024];
int total_size = 0;
while (ifs.read(buffer, sizeof(buffer))) {
total_size += ifs.gcount();
}
total_size += ifs.gcount(); // 处理最后一次读取
std::cout << "Read " << total_size << " bytes from file." << std::endl;
ifs.close();
return 0;
}
```
在这个例子中,我们使用 `read()` 函数从文件中读取数据,并在每次读取操作之后使用 `gcount()` 函数获取最后一次读取的字节数,并累加到 `total_size` 变量中。最后,我们输出读取的字节数并关闭文件流。
阅读全文