2009-12-04 70 views
8

Integer'Image值後取消的空間,當我打印下面這個過程 -在阿達

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; 

結果是(例如):1- 1- 2010

我的問題是如何防止每個Date值之前的一個字符的間距。 (日月年)。 當然,我正在使用日期程序與持有日/月/年的記錄。

在此先感謝。

回答

9

您有幾種選擇:

  • 如果你知道整型值總是非負的,你可以切片省略前導空白的字符串。
  • 您可以使用Ada.Strings.Fixed.Trim()函數來修剪空白。
  • 您可以使用Ada.Text_IO.Integer_IO實例中的Put()過程(例如事先實例化的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: