gpt4 book ai didi

c++ - 在处理大文件(> 2GB)时将 pos_type 分配给 uint64_t 是否安全?

转载 作者:搜寻专家 更新时间:2023-10-31 01:55:08 25 4
gpt4 key购买 nike

当尝试以跨平台方式处理大文件 (2/4GB) 时,将 pos_type 转换为 uint64_t 是否安全?

  • 目标平台:运行当前 Linux 发行版、Windows、Mac 的台式机。
  • 任务:随机二进制文件访问(tellpseekp)。
  • 寻求:最接近标准(POSIX、Win API)、可移植且安全的解决方案。

最佳答案

无论是在实践中还是在理论上。就标准而言,我不认为可以保证 pos_type 甚至可以转换为整体型;从逻辑上讲,它不应该是,因为它包含几个独立数据:距离文件开头的偏移量多字节解码的状态信息。

在实践中,另一方面,你不应该有任何问题基于 Unix 的机器;在 Windows 下,数值不一定如果文件以文本模式打开,意义重大,但您可以将pos_typeuint64_t 并返回而不会丢失值(除非有在原始 pos_type 中确实是重要的多字节状态,但我不知道在这种情况下 Windows 下的任何编码)。

应该可以在编译时确定 pos_type是否会隐式转换为整数类型,并在某些情况下使用它有点像 static_assert。但是,我认为这不会买太多东西;它不会确定整数值是否以任何方式可用,除了重新转换回 pos_type。 (这可能是某种魔法 cookies ,例如。但我不会太担心。这标准允许很多没有合理实现的东西做。请记住,即使在 Windows 下,该值也不总是表示可以读取的确切字节数。

关于c++ - 在处理大文件(> 2GB)时将 pos_type 分配给 uint64_t 是否安全?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8756496/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com