Пространство отмены после Integer'Image оценивает в Ada

тот, который я записал http://www.codeplex.com/lazy

8
задан T.E.D. 3 November 2010 в 12:55
поделиться

1 ответ

У вас есть несколько вариантов:

  • Если вы знаете, что целочисленное значение равно всегда неотрицательный, вы можете разрезать строку, чтобы опустить начальный пробел.
  • Вы можете использовать функцию Ada.Strings.Fixed.Trim (), чтобы обрезать пробел.
  • Вы можете использовать процедуру Put () из экземпляра Ada.Text_IO.Integer_IO (например, предварительно созданного экземпляра Ada.Integer_Text_IO).

Вот пример кода для иллюстрации:

with Ada.Text_IO;
with Ada.Integer_Text_IO;
with Ada.Strings.Fixed;

procedure Int_Image is

   use Ada.Text_IO;
   use Ada.Integer_Text_IO;
   use Ada.Strings.Fixed;

   N : Integer := 20;

   Raw_Image     : constant String := Integer'Image(N);

   Trimmed_Image : constant String := Trim(Raw_Image, Ada.Strings.Left);

   Sliced_Image  : constant String := Raw_Image(2 .. Raw_Image'Last);

begin
   Put_Line("Raw 'image    :" & Raw_Image & ":");
   Put_Line("Trimmed image :" & Trimmed_Image & ":");
   Put_Line("Sliced image  :" & Sliced_Image & ":");
   Put     ("'Put' image   :");
   Put     (N, Width => 0);
   Put_Line(":");
end Int_Image;

Компиляция и запуск этого с помощью GNAT дает:

$./int_image
Raw 'image    : 20:
Trimmed image :20:
Sliced image  :20:
'Put' image   :20:
12
ответ дан 5 December 2019 в 14:03
поделиться
Другие вопросы по тегам:

Похожие вопросы: