Ada I/O:Put_Line 在 Get_Line 之后不工作
Ada I/O: Put_Line not working after Get_Line
我正在尝试在 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;
usrIn
是一个 String(1..80)
,即 80 个字符的数组。
这一行:
Append(appendString,usrIn);
将所有 80 个字符(其中大部分可能是垃圾)附加到 appendString
。
这就是 Get_Line
的 last
参数的用途。
将 userIn
替换为 userIn(userIn'First .. last)
。这是一个仅由 Get_Line
调用读取的字符组成的切片。
如果使用Ada 2005以上的版本编译,也可以使用Get_Line
的函数形式:
declare
usrIn : constant String := Get_Line;
begin
Append(appendString,usrIn);
end;
我正在尝试在 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;
usrIn
是一个 String(1..80)
,即 80 个字符的数组。
这一行:
Append(appendString,usrIn);
将所有 80 个字符(其中大部分可能是垃圾)附加到 appendString
。
这就是 Get_Line
的 last
参数的用途。
将 userIn
替换为 userIn(userIn'First .. last)
。这是一个仅由 Get_Line
调用读取的字符组成的切片。
如果使用Ada 2005以上的版本编译,也可以使用Get_Line
的函数形式:
declare
usrIn : constant String := Get_Line;
begin
Append(appendString,usrIn);
end;