Ada I/O:Put_Line在Get_Line之后无法正常工作

Nik*_*nJR 0 ada console-application

我正在尝试在Ada中进行基本的I/O,但是关于这个的文档不是很有用(除非我去错了地方).在下面的块中,我试图测试字符串追加和输出,但由于某种原因,它实际上只输出"Hello WORLD!" 我确定我错过了一些非常简单的东西,但我已经尝试了几个小时来弄明白这一点.

with Ada.Text_IO; use Ada.Text_IO;
with Ada.Strings.Unbounded; use Ada.Strings.Unbounded;
with Ada.Strings.Fixed; use Ada.Strings.Fixed;


procedure Main is

     usrIn : String(1..80);
     appendString : Unbounded_String;
     last : Natural;

begin
     Put_Line ("Hello WORLD!");
     Get_Line(usrIn, last);
     Put_Line ("AAAAAAAA");
     appendString := To_Unbounded_String("USER IN: ");
     Append(appendString,usrIn);
     Put_Line("Output follows");
     Put_Line(To_String(appendString));

end Main;
Run Code Online (Sandbox Code Playgroud)

Kei*_*son 5

usrIn是一个String(1..80),即80个字符的数组.

这一行:

Append(appendString,usrIn);
Run Code Online (Sandbox Code Playgroud)

将所有80个字符(大部分可能是垃圾)附加到appendString.

这就是last争论的Get_Line目的.

替换userInuserIn(userIn'First .. last).这是一个仅包含Get_Line调用读取的字符的片.