根据http://en.cppreference.com/w/cpp/io/streamsize
据我所能想象,流的大小永远不会为负,所以,我的问题是:
为什么std::streamsize
定义为有符号而不是无符号?背后的原理是什么?
最佳答案
draft C++ standard在296
类型部分中具有以下脚注27.5.2
:
我们可以在D.7.1.1
strstreambuf构造函数一节中看到以下条目(强调我的观点):
strstreambuf(char* gnext_arg, streamsize n, char *pbeg_arg = 0);
strstreambuf(signed char* gnext_arg, streamsize n,
signed char *pbeg_arg = 0);
strstreambuf(unsigned char* gnext_arg, streamsize n,
unsigned char *pbeg_arg = 0);
并说:
从下面的讨论中我们可以看出,确实需要
n
类型的streamsize
能够采用负值:对于此要求,这似乎是一个较差的论点,并且closed issue 255来自Howard Hinnant的类似评论中说: