ada

Cancel space after Integer'Image value in Ada


When printing with this procedure:

procedure put (Date: Date_Type) is
begin
  Put(Integer'Image(Date.Day)); --'
  Put("-");
  Put(Integer'Image(Date.Month)); --'
  Put("-");
  Put(Integer'Image(Date.Year)); --'
end;

The result is (for example): 1- 1- 2010

My question is how to prevent the spacing of one character before every Date value. (day/month/year). Of course, I'm using Date procedure with record inside holding day/month/year.

Thanks in advance.


Solution

  • You have a few options:

    Here's some code to illustrate:

    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;
    

    Compiling and running this with GNAT yields:

    $./int_image
    Raw 'image    : 20:
    Trimmed image :20:
    Sliced image  :20:
    'Put' image   :20: