在Ada中取消Integer'Image值后面的空格

11

我打印出下面的过程时 -

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
我的问题是如何防止每个日期值之前有一个字符的间隔。 (日/月/年)当然,我正在使用带记录的日期过程,其中包含日/月/年。
提前致谢。
1个回答

14

您有几个选择:

  • 如果您知道整数值始终是非负的,您可以切片字符串以省略前导空格。
  • 您可以使用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:

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接