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

尝试在Ada中打印数字时使用前导空格,ada,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)

我写了一个程序,它接受一个整数作为输入,并在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;

标准规定了前导空格:“如果要输出的字符序列的宽度小于字符,则首先输出前导空格以弥补差异。”

如果需要不同的行为,请指定宽度,如下所示:
Integer\u Text\u IO.Put(Int,Width=>1)

Put过程的定义的宽度参数位于类型字段上。它的定义是

subtype Field is Integer range 0 .. implementation-defined;
我建议将字段宽度设置为0,我认为它比1更突出

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

Ada.Integer_Text_IO.Default_Width = 0;

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

您不是指前导空格吗?@egilhh我已添加了输出屏幕截图及其尾随空格。:)当然,它看起来像是标准规定的前导空格:“如果要输出的字符序列的宽度小于字符,则首先输出前导空格以弥补差异。”。如果需要不同的行为,请指定宽度,如下所示:Integer\u Text\u IO.Put(Int,width=>1)@egilhh感谢您的快速回复,它起了作用。我认为你应该加上这个作为答案,这样人们可以很容易地找到它。“前导空格”的意思是在可见字符之前;“尾随空格”是指后面的空格。如果你在整个问题(尤其是标题)中都纠正了这一点,人们将能够更容易地发现这一点。有没有办法只将默认宽度设置为0一次,或者为每个程序设置默认宽度,我应该这样做?你可以在包中创建一个执行初始化的过程(注意细化顺序),然后从主程序内部调用它。另一种方法非常笨重——将其放入包体初始化中。由于除非有必要,否则包体不能存在,因此为此目的的专用包必须声明一个无用的子程序,这样包体才是必需的。