我试图在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;
答案 0 :(得分:5)
usrIn
是String(1..80)
,即80个字符的数组。
这一行:
Append(appendString,usrIn);
将所有80个字符(大部分可能是垃圾)附加到appendString
。
这是last
的{{1}}参数。
将Get_Line
替换为userIn
。这是一个仅由userIn(userIn'First .. last)
调用读取的字符组成的切片。
答案 1 :(得分:4)
如果您使用Ada 2005或更高版本进行编译,您还可以使用Get_Line
的函数形式:
// create, bind, listen accept etc..
while(1)
{
UpdateData();
int ret = send(sock, data, dataLength , 0);
// Check if client sent "Abort" and if so, break.
}