std::fpos

来自cppreference.com
< cpp‎ | io
定义于头文件 <ios>
template< class State >
class fpos;

类模板 std::fpos 的特化标识流或文件中的绝对位置。每个 fpos 类型对象保有流中的字节位置(典型地为 std::streamoff 类型的私有成员)和当前迁移状态, State 类型值(典型地为 std::mbstate_t)。

提供下列下列 std::fpos 特化:

类型 定义
streampos std::fpos<std::char_traits<char>::state_type>
wstreampos std::fpos<std::char_traits<wchar_t>::state_type>
另外,提供 std::u16streamposstd::u32streampos 为满足 pos_type 要求的实现定义类型。 (C++11 起)

[编辑] 成员函数

获取/设置迁移状态的值
(公开成员函数)

另外,必须提供下列成员函数或运算符,尽管不指定是成员还是非成员。

  • 接受 int 类型参数的构造函数。
  • 接受 std::streamoff 类型参数的构造函数。此构造函数必须亦接受特殊值 std::streamoff(-1) :某些流操作返回以此方式构造的 std::fpos ,以指示错误。
  • fposstd::streamoff 的转换运算符,结果的值等于从 std::fpos(0) 的偏移。
  • operator== ,比较二个 std::fpos 类型对象,并返回可转换为 bool 的类型的值
  • operator!= ,比较二个 std::fpos 类型对象,并返回可转换为 bool 的类型的值
  • operator+operator+= ,能将 std::streamoff 加到 std::fpos
  • operator-operator-= ,能从 std::fpos 减去 std::streamoff
  • operator- ,能相减二个 std::fpos 类型对象,产生 std::streamoff

[编辑] 注意

要求 std::streamposstd::wstreampos 为同一类型,因为要求 std::char_traits<char>::state_typestd::char_traits<wchar_t>::state_type 均为 std::mbstate_t 。 C++98 有过自相矛盾的陈述,说若实现支持窄面向 iostream 中的无迁移编码,则它们可以不同,但在宽面向流中支持一或多个迁移编码,不过这在 C++03 中更正了。

一些 I/O 流成员函数返回并操纵成员 typedef pos_type 类型对象。对于流,这些成员 typedef 由模板形参 Traits 提供,默认为 std::char_traits ,它定义其 pos_typestd::fpos 的特化。 Traits::pos_type 不是 std::fpos<std::mbstate_t>std::streamposstd::wstreampos 的别名)时, I/O 流库的行为是实现定义的。

[编辑] 参阅

表示文件/流位置(从 fpos 的偏移),足以表示任何文件大小
(typedef)
返回输出位置指示器
(std::basic_ostream 的公开成员函数) [编辑]
设置输出位置指示器
(std::basic_ostream 的公开成员函数) [编辑]
获取文件位置指示器
(函数) [编辑]