尝试以跨平台方式处理大型文件(2 / 4GB)时,将pos_type
转换为uint64_t
是否安全?
tellp
和seekp
)。答案 0 :(得分:3)
在实践中或在理论上。就标准而言,我没有
认为pos_type
甚至可以转换为保证
整体类型;从逻辑上讲,它不应该是,因为它包含几个
独立数据:文件和开头的偏移量
用于多字节解码的状态信息。
另一方面,在实践中,你不应该有任何问题
基于Unix的机器;在Windows下,数值不一定
如果在文本模式下打开文件意味着很多,但你可以转换一个
pos_type
到uint64_t
然后返回而不会失去价值(除非那里
在原pos_type
中确实是重要的多字节状态,但是我
不知道在Windows下的任何编码,这将是这种情况)。
应该可以在编译时确定是否pos_type
将隐式转换为整数类型,并在某些情况下使用它
static_assert
。但是,我不认为这会买得多;它
不会确定积分值是否以任何方式可用,除非
重新转换回pos_type
。 (这可能是某种魔力
例如,cookie。但我不会太担心它。该
标准允许很多没有合理实施的东西
做。请记住,即使在Windows下,价值也并非总是如此
表示可以读取的确切字节数。