String 在Ada中打印字符
我已宣布:String 在Ada中打印字符,string,character,ada,String,Character,Ada,我已宣布: 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
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\u IO.Put\u Line()将其打印到屏幕上的最佳方式是什么?假设您想使用
Ada.Text\u IO
,而不仅仅是Put\u Line
,并且假设行数
是一个整数范围,如Num\u 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;
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_行
将打印出每行中的所有字符。Ada字符串不是以null结尾的,因此如果在某些行的末尾有未使用的数据,也会打印出来
有很多方法可以解决这个问题,但是它们与处理C字符串的方法有很大的不同。如果你试图像处理C字符串那样处理Ada字符串,你会发疯的
出于这个原因,我非常希望看到您的代码实际使用数据填充字符(及其背后的原理)。为什么每行的字符数比定义的
页面宽度多一个?
?好问题。。不确定(取自一些现有代码)