Spec-Zone.ru › Ada 2012
Справочное руководство по Ada 2012

A.10.8 Ввод-вывод для целых типов

Статическая семантика

Следующие процедуры определены в обобщенных пакетах Integer_IO и Modular_IO, которые необходимо экземпляризировать для соответствующего знакового целого или модульного типа соответственно (указано Num в спецификациях).
Значения выводятся как десятичные или основанные литералы без символов нижнего подчеркивания или экспоненты, и, для Integer_IO, предваряются знаком минус, если отрицательные. Формат (который включает любые ведущие пробелы и знак минус) может быть указан необязательным параметром ширины поля. Значения ширины полей в форматах вывода являются подтипом целых неотрицательных чисел Field. Значения оснований являются подтипом целого числа Number_Base.
подтип Number_Base является Целым в диапазоне 2 .. 16;
Значения по умолчанию для ширины поля и основания, которые будут использоваться процедурами вывода, определены следующими переменными, объявленными в обобщенных пакетах Integer_IO и Modular_IO:
Default_Width : Field := Num'Width;
Default_Base : Number_Base := 10;
Предоставляются следующие процедуры:
процедура Get(File : входной File_Type; Item : выходной Num; Width : входной Field := 0);
процедура Get(Item : выходной Num; Width : входной Field := 0);
Если значение параметра Width равно нулю, пропускаются любые ведущие пробелы, знаки конца строки или знаки конца страницы, затем считывается знак плюс, если он есть, или (только для знакового типа) знак минус, если он есть, затем считывается самая длинная возможная последовательность символов, соответствующая синтаксису числового литерала без точки. Если значение Width отличное от нуля, то вводятся ровно Width символов или символы (возможно, ни одного) до знака конца строки, что произойдет раньше; любые пропущенные ведущие пробелы включаются в счет.
Возвращает в параметре Item значение типа Num, соответствующее введенной последовательности.
Исключение Data_Error распространяется, если последовательность считанных символов не образует допустимого целого литерала или если полученное значение не принадлежит подтипу Num.
процедура Put(File : входной File_Type;
Item : входной Num;
Width : входной Field := Default_Width;
Base : входной Number_Base := Default_Base);

процедура Put(Item : входной Num;
Width : входной Field := Default_Width;
Base : входной Number_Base := Default_Base);
Выводит значение параметра Item как целое число, без нижних подчеркиваний, без экспоненты и без ведущих нулей (но одиночный ноль для значения ноль), и предваряемый знаком минус для отрицательного значения.
Если результирующая последовательность символов для вывода имеет меньше чем Width символов, то ведущие пробелы сначала выводятся, чтобы восполнить разницу.
Использует синтаксис десятичного литерала, если параметр Base имеет значение десять (явно или через Default_Base); в противном случае использует синтаксис основанного литерала, с заглавными буквами для любых букв.
процедура Get(From : входной String; Item : выходной Num; Last : выходной Positive);
Считывает целое значение с начала заданной строки, следуя тем же правилам, что и процедура Get, которая считывает целое значение из файла, но рассматривая конец строки как терминатор файла. Возвращает в параметре Item значение типа Num, соответствующее введенной последовательности. Возвращает в Last значение индекса, такое что From(Last) — последний прочитанный символ.
Исключение Data_Error распространяется, если введенная последовательность не имеет требуемого синтаксиса или если полученное значение не принадлежит подтипу Num.
процедура Put(To : выходной String;
Item : входной Num;
Base : входной Number_Base := Default_Base);
Выводит значение параметра Item в заданную строку, следуя тем же правилам, что и для вывода в файл, используя длину заданной строки как значение для Width.
Integer_Text_IO — это библиотечный пакет, являющийся необобщенным эквивалентом Text_IO.Integer_IO для предопределенного типа Integer:
с Ada.Text_IO;
пакет Ada.Integer_Text_IO является новым Ada.Text_IO.Integer_IO(Integer);
Для каждого предопределенного знакового целого типа предоставляется необобщенный эквивалент Text_IO.Integer_IO с такими именами, как Ada.Long_Integer_Text_IO.

Разрешения реализации

Необобщенные пакеты-эквиваленты могут, но не обязательно, быть фактическими экземплярами обобщенного пакета для соответствующего предопределенного типа.
Абзацы 24 и 25 были удалены.

Примеры

подтип Byte_Int является Целым в диапазоне -127 .. 127;
пакет Int_IO является новым Integer_IO(Byte_Int); используй Int_IO;
-- формат по умолчанию используется при экземпляризации,
-- Default_Width = 4, Default_Base = 10
Put(126); -- "b126"
Put(-126, 7); -- "bbb–​126"
Put(126, Width => 13, Base => 2); -- "bbb2#1111110#"


Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API