Cancel space after Integer'Image value in Ada

后端 未结 1 364
余生分开走
余生分开走 2021-01-11 23:52

when I\'m print this procedure below -

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


        
相关标签:
1条回答
  • 2021-01-11 23:58

    You have a few options:

    • If you know the Integer value is always non-negative, you can slice the string to omit the leading blank.
    • You can use the Ada.Strings.Fixed.Trim() function to trim off the blank.
    • You can use the Put() procedure from an Ada.Text_IO.Integer_IO instantiation (such as the preinstantiated Ada.Integer_Text_IO).

    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:
    
    0 讨论(0)
提交回复
热议问题