【发布时间】:2018-10-30 13:56:19
【问题描述】:
在 c++ 中使用 cin.ignore() 时,它需要一个参数,即要消耗的字符数,直到出现分隔符。
大多数情况下,我观察到使用以下内容cin.ignore(numeric_limits<streamsize>::max(), '\n');
我很想知道numeric_limtis<streamsize>::max() 的值,所以我只是输出了它的值,它变成了一个巨大的值 9223372036854775807 。
如果它代表字符的数量,那么它可以以字节为单位来考虑,如果是这样,这不是一个非常大的值,超出了我的硬盘空间。
谁能告诉我它实际上是什么以及为什么这么大的价值?
【问题讨论】:
-
这是流缓冲区理论上可以支持的绝对最大字符数。这实际上是一种表达“在我们看到分隔符之前无限制地忽略字符”的方式。
-
另外,那个巨大的数字恰好是
2^63 - 1,这是一个有符号的64位整数的最大值。 -
请注意,
streamsize只是一个 typedef。 Afaik 还使用容器,您在推送numeric_limits<size_t>::max()元素之前会遇到问题。我认为这些只是告诉您这些类型可以支持什么,而您似乎关心您的物理硬件可以支持什么
标签: c++ byte numeric-limits