xml*_*lmx 6 c++ types integer file unsigned-long-long-int
为std::streampos保证是unsigned long long?
如果不是这样,如何std::istream::seekg在大于4G的文件上正常工作?
来自http://en.cppreference.com/w/cpp/io/fpos:
std::streampos 是类模板的特化
template< class State > class fpos;
Run Code Online (Sandbox Code Playgroud)
std::streampos 是typedef'是 std::fpos<std::char_traits<char>::state_type>
每个类型的对象都fpos保存流中的字节位置(通常作为类型的私有成员std::streamoff).
来自http://en.cppreference.com/w/cpp/io/streamoff:
该类型std::streamoff是一个足够大小的有符号整数类型,表示操作系统支持的最大可能文件大小.通常,这是一个typedef long long.
回答你的问题......
问题是std::streampos保证是unsigned long long?
回答我相信你的意思是要确定是否保证持有该头寸的基本整数类型unsigned long long.从这个意义上讲,真正的问题是是否std::streamoff有必要进行保证unsigned long long.该问题的答案是"否",您可以从上面的描述中推断出来.
问题如果不是这样,如何std::istream::seekg在大于4G的文件上正常工作?
解答如果操作系统支持使用大于4G的文件,std::streamoff则会相应地进行设置.即便如此,它很可能是一个有符号整数类型.这是http://en.cppreference.com/w/cpp/io/streamoff的另一个引用.
std :: streamoff值-1也用于表示某些I/O库函数的错误条件.