IO文件操作
打开文件,Open
1 | std::ifstream yuv_file; |
第二个参数_Mode
默认值为 ios_base::in
,表示以只读模式打开文件。常见的模式包括:
ios_base::in
:以输入(读)模式打开文件。ios_base::out
:以输出(写)模式打开文件。ios_base::binary
:以二进制模式打开文件。ios_base::app
:以追加模式打开文件,写入的内容会追加到文件末尾。ios_base::trunc
:如果文件存在,则在打开时将其长度截断为 0(通常与ios_base::out
一起使用)。ios_base::ate
:在打开文件时定位到文件末尾。
移动文件,seekg
1 | std::ifstream yuv_file; |
seekg
是 C++ 标准库中用于操作输入文件流(如 std::ifstream
)位置的成员函数。seekg
的功能是将文件流的“读指针”移动到指定的位置,从而控制从文件中读取数据的位置。
seekg
有两个重载版本:
1 | std::istream& seekg(std::streampos pos); |
参数说明
-
seekg(std::streampos pos)
:pos
: 一个绝对位置(std::streampos
类型),表示要将文件指针移动到文件的哪个字节位置。这是一个文件中的字节偏移量,通常相对于文件的起始位置。
-
seekg(std::streamoff off, std::ios_base::seekdir dir)
:off
: 一个相对偏移量(std::streamoff
类型),表示要从指定的基准位置移动多少字节。dir
: 一个枚举类型(std::ios_base::seekdir
),用于指定偏移量的基准位置。它可以取以下值:std::ios_base::beg
: 基于文件的起始位置进行偏移。std::ios_base::cur
: 基于当前读指针位置进行偏移。std::ios_base::end
: 基于文件的末尾进行偏移。
【示例代码】
1 | std::ifstream yuv_file("400_300_25.yuv", std::ios::binary); |
读取指针位置,tellg
tellg
是 C++ 标准库中的一个成员函数,通常用于文件输入流(如 std::ifstream
)中。它的主要作用是返回文件流的当前读指针位置,即返回当前文件读取位置的偏移量(以字节为单位)。
使用场景
- 获取文件大小:通过将读指针移动到文件末尾,然后使用
tellg
获取文件大小。 - 检查文件流中的当前位置:在处理文件流时,可以随时使用
tellg
检查当前读指针的位置,以便在处理过程中准确定位文件中的数据。 - 保存和恢复读指针位置:你可以使用
tellg
保存当前读指针位置,在需要时使用seekg
恢复到这个位置,方便文件的随机访问。
【示例代码】
1 | if (yuv_file.tellg() == file_size) // 如果文件到头了 |
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 JasonQian's Blog!