尝试在 Ada 中打印数字时的前导空格

Leading spaces while trying to print a number in Ada

我编写了一个程序,它接受一个整数作为输入并在 Ada 中打印该整数作为输出。当我 运行 程序时,它正在打印数字,但有几个前导空格。有人知道为什么会这样吗?这是代码:

with Ada.Text_IO, Ada.Float_Text_IO, Ada.Integer_Text_IO;
use Ada;

procedure Solution is

  Int:   Integer;
begin

 Integer_Text_IO.Get (Int);
 Integer_Text_IO.Put (Int);

end Solution;

前导 空格是标准规定的:"If the resulting sequence of characters to be output has fewer than Width characters, then leading spaces are first output to make up the difference." RM A.10.8(13).

如果您想要不同的行为,请指定宽度,如下所示: Integer_Text_IO.Put (Int, Width => 1);

Put 过程的定义将宽度参数设置为字段类型。它的定义是...

subtype Field is Integer range 0 .. implementation-defined;

我建议将字段宽度设置为 0,我认为它比 1 更突出。

或者您可以只设置默认字段宽度...

Ada.Integer_Text_IO.Default_Width = 0;

在程序的启动部分,这将确保此包的所有输出都没有前导空格。