1

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

我很想知道 的值,numeric_limtis<streamsize>::max()所以我只输出了它的值,它变成了一个巨大的值 9223372036854775807 。如果它代表字符的数量,那么它可以以字节为单位来考虑,如果是这样,这不是一个非常大的值,超出了我的硬盘空间。

有人可以告诉我它实际上是什么以及为什么这么大的价值吗?

4

2 回答 2

6

这不是超出我的硬盘空间的非常大的值吗?

这正是这个值的目的。您想跳过尽可能多的字符。事实上,这个值确实表示无限,因为这个值的计数测试是禁用的

计数字符被提取。在 count 等于 std::numeric_limits< std::streamsize >::max() 的特殊情况下禁用此测试

于 2018-10-30T14:02:21.197 回答
0

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

于 2018-10-30T14:01:51.593 回答