numeric_limits<streamsize>::max() 在 C++ 中的值

Value of numeric_limits<streamsize>::max() in c++

在 c++ 中使用 cin.ignore() 时,它需要一个参数,即要消耗的字符数,直到出现分隔符。 大多数情况下,我观​​察到以下被使用 cin.ignore(numeric_limits<streamsize>::max(), '\n');

我很好奇 numeric_limtis<streamsize>::max() 的值,所以我只是输出它的值,它变成了一个巨大的值 9223372036854775807 。 如果它代表字符数,那么它可以以字节为单位考虑,如果是这样,这不是超过我的硬盘space的一个很大的值。

谁能告诉我它到底是什么以及为什么值这么大?

numeric_limtis<streamsize>::max() 给出了 streamsize 的对象可以容纳的最大值。这实际上不是缓冲区中可以容纳多少个字符,而是缓冲区使用的类型支持的类型。如果你有一台足够大的机器和足够的内存,那么你可以在缓冲区中获得 9,223,372,036,854,775,807 个字符。

isn't this a very large value exceeding my HDD space.

这正是该值的用途。你想跳过尽可能多的字符。事实上,这个值确实表示 infinite,因为 count test is disabled for this value:

count characters were extracted. This test is disabled in the special case when count equals std::numeric_limits< std::streamsize >::max()