Значение numeric_limits <streamsize>:: max () в c ++ - PullRequest
0 голосов
/ 30 октября 2018

При использовании cin.ignore() в c ++ он принимает аргумент количества символов для использования до появления разделителя. Чаще всего я наблюдал следующее использование cin.ignore(numeric_limits<streamsize>::max(), '\n');

Мне было любопытно узнать значение numeric_limtis<streamsize>::max(), поэтому я просто вывел его значение, и оно оказалось огромным значением 9223372036854775807. Если он представляет количество символов, то его можно рассматривать в байтах, и если это правда, не слишком ли это большое значение, превышающее пространство на моем жестком диске.

Может кто-нибудь сказать, что это на самом деле и почему такая большая ценность?

Ответы [ 2 ]

0 голосов
/ 30 октября 2018

не слишком ли большое значение, превышающее мое пространство на жестком диске.

В этом и заключается цель этого значения. Вы хотите пропустить как можно больше символов. Фактически, это значение указывает бесконечное , поскольку для этого значения отключен тест count :

Количество символов были извлечены. Этот тест отключен в специальном случай, когда число равно std :: numeric_limits :: max ()

0 голосов
/ 30 октября 2018

numeric_limtis<streamsize>::max() дает максимальное значение, которое может содержать объект streamsize. На самом деле это не то, сколько символов может быть в буфере, а только то, какой тип поддерживает буфер. Если у вас достаточно большой компьютер с достаточным объемом памяти, вы можете получить в буфер 9 223 372 036 854 775 807 символов.

...