如何使用std :: fpos?

时间:2014-06-29 15:01:43

标签: c++ io standards iostream

在最新的C ++标准草案的27.5.4中,我找到了一个奇怪的模板类std::fpos,但我不知道它的目的是什么。 (文档含糊不清,信息量少,难以理解。)

我正在为嵌入式系统编写自己的mini-STL,由于其不可移植性,我无法使用编译器提供的STL。所以,我必须明白这意味着什么。

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

是否有任何示例来说明如何使用std::fpos

1 个答案:

答案 0 :(得分:6)

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

原则上,std::fpos<StateT>仅表示流中的字节位置。对于在内部表示中行进的流,即,在不需要编码/解码的情况下,字节位置可能是它存储的全部。当文件流进入图片时,位置可能很大(即,比C ++ 98中的内置整数更大,只需要32位; std::fpos<StateT>是标准的一部分,因为第一个版本并且外部编码可能与内部编码不同,需要捕获编码状态。