c11fstream获取read函数读取的长度
时间: 2023-12-09 19:06:20 浏览: 97
c11fstream的read函数返回的是实际读取的字节数,可以通过调用其返回值获取读取的长度。例如:
```cpp
#include <fstream>
int main() {
std::ifstream file("example.txt");
char buffer[100];
std::streamsize length = file.read(buffer, sizeof(buffer)).gcount();
// length为实际读取的字节数
return 0;
}
```
相关问题
c11 fstream常用函数
1. open() – 打开文件
2. close() – 关闭文件
3. is_open() – 判断文件是否打开
4. good() – 判断文件是否无错误
5. bad() – 判断文件是否有错误
6. fail() – 判断文件是否有错误但不是致命的
7. eof() – 判断是否到达文件末尾
8. tellg() – 返回当前读取位置
9. tellp() – 返回当前写入位置
10. seekg() – 设置读取位置
11. seekp() – 设置写入位置
12. read() – 读取指定长度的数据
13. write() – 写入指定长度的数据
14. getline() – 读取一行数据
15. flush() – 刷新文件缓冲区
16. ignore() – 忽略指定个数的字符
17. put() – 写入一个字符
18. get() – 读取一个字符
19. peek() – 预读取一个字符
20. putback() – 把一个字符放回流中
21. width() – 设置读写字段的宽度
22. precision() – 设置浮点数输出的精度
23. sync() – 同步输入输出流
24. tie() – 绑定输入输出流
25. rdbuf() – 返回文件流的缓冲区指针
C++ fstream 中的read函数
C++ fstream 中的 read 函数是用来从文件中读取指定数量的字节数据的函数。
函数声明如下:
```
istream& read(char* buffer, streamsize size);
```
其中,第一个参数 `buffer` 是指向读取数据存放的缓冲区的指针,第二个参数 `size` 是要读取的字节数。
调用该函数后,会从文件中读取 `size` 字节的数据,并将其存放到 `buffer` 指向的缓冲区中。同时,函数会返回一个 `istream` 类型的引用,这使得我们可以通过链式调用来进行连续的读取操作。
读取的数据量可能会小于 `size`,因为文件末尾可能会提前出现。此外,如果读取过程中遇到错误,函数会返回一个指向流对象的指针,而非返回引用。
以下是一个简单的使用 `read` 函数读取文件的示例:
```cpp
#include <iostream>
#include <fstream>
using namespace std;
int main() {
char buffer[1024];
ifstream in("test.txt", ios::binary);
// 读取 10 个字节的数据
in.read(buffer, 10);
cout << buffer << endl;
// 读取剩余数据
in.read(buffer, sizeof(buffer));
cout << buffer << endl;
in.close();
return 0;
}
```
在上面的示例代码中,我们首先打开了一个名为 `test.txt` 的文件,并使用 `read` 函数读取了其中的前 10 个字节数据,然后再次调用 `read` 函数读取了剩余的数据,并将其输出到控制台上。最后,关闭文件流并退出程序。
阅读全文