根据http://en.cppreference.com/w/cpp/io/streamsize



据我所能想象,流的大小永远不会为负,所以,我的问题是:

为什么std::streamsize定义为有符号而不是无符号?背后的原理是什么?

最佳答案

draft C++ standard296类型部分中具有以下脚注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的类似评论中说:

09-06 20:48