尝试在 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;
在程序的启动部分,这将确保此包的所有输出都没有前导空格。
我编写了一个程序,它接受一个整数作为输入并在 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;
在程序的启动部分,这将确保此包的所有输出都没有前导空格。