Anular espaço depois valor Integer'Image em Ada
-
12-09-2019 - |
Pergunta
quando estou imprimir este procedimento a seguir -
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;
O resultado é (por exemplo): 1- 1- 2010
A minha pergunta é como evitar que o espaçamento de um personagem antes de cada valor Date. (dia mês ano). É claro que eu estou usando procedimento de data com registro dentro segurando dia / mês / ano.
Agradecemos antecipadamente.
Solução
Você tem algumas opções:
- Se você sabe o valor inteiro é sempre não-negativo, você pode cortar a corda para omitir o vazio de liderança.
- Você pode usar a função Ada.Strings.Fixed.Trim () para aparar o espaço em branco.
- Você pode usar o procedimento Put () a partir de uma instanciação Ada.Text_IO.Integer_IO (como o Ada.Integer_Text_IO preinstantiated).
Aqui está algum código para ilustrar:
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;
compilar e executar isso com rendimentos mosquito:
$./int_image
Raw 'image : 20:
Trimmed image :20:
Sliced image :20:
'Put' image :20:
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow