Annuler espace après la valeur Integer'Image Ada
-
12-09-2019 - |
Question
quand je suis imprimer cette procédure ci-dessous -
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;
Le résultat est (par exemple): 1- 1- 2010
Ma question est de savoir comment empêcher l'espacement d'un caractère avant chaque valeur de date. (jour mois année). Bien sûr, je suis en utilisant la procédure de rendez-vous avec enregistrement dans la tenue jour / mois / année.
Merci d'avance.
La solution
Vous avez quelques options:
- Si vous connaissez la valeur entière est toujours non-négatif, vous pouvez couper la chaîne à omettre le premier vide.
- Vous pouvez utiliser la fonction Ada.Strings.Fixed.Trim () pour couper le blanc.
- Vous pouvez utiliser la procédure d'une instanciation Ada.Text_IO.Integer_IO Put () (comme le Ada.Integer_Text_IO preinstantiated).
Voici un code pour illustrer:
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;
Compiler et l'exécution de ce avec des rendements GNAT:
$./int_image
Raw 'image : 20:
Trimmed image :20:
Sliced image :20:
'Put' image :20:
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow