小编Mik*_* T.的帖子

无法打印字符串常量数组字符串的内容?

我对 Ada 有点初学者,我正在尝试声明和使用不同长度的字符串数组。

使用 Ada'83,我可以如下声明一个可变长度字符串常量数组(示例取自Ada FAQ

type table is access String;

 TESTS : constant array (Positive range 1..3) of table
         := ( 1 => new String'("One"),
              2 => new String'("Two"),
              3 => new String'("Three")
            );
Run Code Online (Sandbox Code Playgroud)

然而令我沮丧的是,即使结果似乎是一个字符数组,但它们的行为并不像字符串。当我尝试编译以下代码时,我收到一条错误消息“在重载解析期间检测到不一致 [LRM 8.7]”

for COUNT in TESTS'Range loop
   Put(TESTS(COUNT));
   New_Line;
end loop;
Run Code Online (Sandbox Code Playgroud)

但是,我可以使用以下代码打印出每个“字符串”的内容。

for COUNT in TEST'Range loop
   for COUNTER in TEST(COUNT)'Range loop
      Put(TEST(COUNT)(COUNTER));
   end loop;
   New_Line;
end loop;
Run Code Online (Sandbox Code Playgroud)

不幸的是,我想使用这些值来测试一些将字符串作为参数的代码,所以这并没有真正的帮助......

有没有办法在 Ada'83 中迭代一个长度可变的字符串常量数组,或者将字符数组转换为不同长度的字符串。

谢谢

不,这不是作业,是的,我知道我在使用古老的编译器!

arrays ada

2
推荐指数
1
解决办法
84
查看次数

标签 统计

ada ×1

arrays ×1