在c ++中使用cin.ignore()
时,要消耗字符数的参数,直到定界符出现为止。
我最经常观察到以下使用cin.ignore(numeric_limits<streamsize>::max(), '\n');
我很想知道numeric_limtis<streamsize>::max()
的值,所以我只输出了它的值,结果变成了一个巨大的值9223372036854775807。
如果它表示字符数,则可以以字节为单位考虑,如果是这样,那么这不是一个超出我的HDD空间的很大的值。
有人可以告诉我它实际上是什么,为什么这么大的价值吗?
答案 0 :(得分:3)
这不是超出我的硬盘空间的很大值。
这正是此值的目的。您想跳过尽可能多的字符。实际上,由于count test is disabled for this value:
,此值的确表示 infinite 。提取了个字符。该测试在特殊情况下被禁用 当count等于std :: numeric_limits
:: max()
答案 1 :(得分:0)
numeric_limtis<streamsize>::max()
为您提供streamsize
对象可以容纳的最大值。这实际上不是缓冲区中可以包含多少个字符,而只是缓冲区使用的支持类型。如果您的计算机足够大且具有足够的内存,则缓冲区中可以得到9,223,372,036,854,775,807个字符。