gpt4 book ai didi

c++ - std::streampos 是否保证为 unsigned long long?

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:14:10 56 4
gpt4 key购买 nike

std::streampos 是否保证为 unsigned long long

如果不是这样,std::istream::seekg 如何在大于 4G 的文件上正常工作?

最佳答案

来自 http://en.cppreference.com/w/cpp/io/fpos :

std::streampos是类模板的特化

template< class State > class fpos;

std::streampos类型定义为 std::fpos<std::char_traits<char>::state_type>

类型为 fpos 的每个对象保存流中的字节位置(通常作为 std::streamoff 类型的私有(private)成员)。

来自 http://en.cppreference.com/w/cpp/io/streamoff :

类型std::streamoff是一个有符号整数类型,其大小足以表示操作系统支持的最大可能文件大小。通常,这是 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 的另一句话.

A std::streamoff value of -1 is also used to represent error conditions by some of the I/O library functions.

关于c++ - std::streampos 是否保证为 unsigned long long?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24437016/

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