如何使用std::fpos

How to use std::fpos?

本文关键字:fpos std 何使用      更新时间:2023-10-16

在最新c++标准草案的27.5.4中,我发现了一个奇怪的模板类std::fpos,但我不知道它的目的是什么。(文档内容模糊,信息较少,难以理解。)

我正在为嵌入式系统编写我自己的迷你STL,我不能使用编译器提供的STL,因为它的不可移植性。所以,我必须明白这是什么意思。

例如,我想用c++ 11开发一个linux内核模块,在这种情况下,你不能直接使用任何编译器提供的c++标准库,无论你使用clang、gcc还是vc++。没有一个可以移植到linux内核。所以,我必须从头开始实现一个最小的STL。

是否有例子说明如何使用std::fpos

std::fpos<StateT>用于表示流中的位置,包括转换状态,即std::mbstate_t或它替换用户提供的字符类型。您可以使用std::pos<StateT>来恢复可搜索流的位置,特别是文件流。它是流上各种查找操作的结果,用作查找绝对位置的查找操作的实参。

原则上,std::fpos<StateT>仅表示流中的一个字节位置。对于在内部表示中传输的流,即不需要编码/解码的流,字节位置可能就是它存储的全部。当文件流进入图像时,位置可能是巨大的(即,比c++ 98中只需要32位的内置整数所能表示的要大;std::fpos<StateT>从第一个版本开始就是标准的一部分),外部编码可能与内部编码不同,需要捕获编码状态。