我声明了这些:
subtype Num_Char is Natural
range 1 .. Definitions.Page_Width + 1;
subtype Number_Of_Rows is Definitions.Number_Of_Rows;
type Chars is array (Number_Of_Rows, Num_Char) of Character;
The_Chars : Chars;
使用Ada.Text_IO.Put_Line()将其打印到屏幕的最佳方法是什么?
答案 0 :(得分:4)
假设您要特别使用Ada.Text_IO
而不仅仅Put_Line
,并假设Number_Of_Rows
是一个整数范围,例如Num_Char
,那将是
for R in The_Chars'Range (1) loop
for C in The_Chars'Range (2) loop
Ada.Text_IO.Put (The_Chars (R, C));
end loop;
Ada.Text_IO.New_Line;
end loop;
答案 1 :(得分:2)
Ada中的许多问题实际上都会回到您最初选择的类型。所以个人而言,我建议稍作重写,让你的生活更轻松:
subtype Row is String (1..Definitions.Tote_Page_Width + 1);
type Chars is array (Definitions.Number_Of_Rows) of Row;
现在你可以用以下内容写出来:
for I in The_Chars'range loop
Ada.Text_IO.Put_Line (The_Chars (I));
end loop;
然而,这里仍然存在很大问题。 Put_Line
将打印出所有每行中的字符。 Ada字符串不是以空值终止的,因此如果某些行末尾有未使用的数据,那么它也会被打印出来。
有很多方法可以解决这个问题,但它们与用于处理C字符串的技术截然不同。如果你试图像处理C字符串一样处理Ada字符串,你就会疯狂。
出于这个原因,我非常希望看到您的代码实际上填充 The_Char
数据(及其背后的基本原理)。