在Ada中初始化固定长度字符串的最佳方法是什么?

Dan*_*Dan 2 string ada bounded-types

我想String在Ada中初始化一个固定长度或多或少如下:

S : String (1..256) := ("Hello", others => Character'Val (0));
Run Code Online (Sandbox Code Playgroud)

我在尝试编译时遇到错误.有没有办法实现类似于上面的东西?

Fré*_*aca 5

您的代码无法编译的原因是String是一个Character数组,因此等效

s : String(1..256) := (1 => 'H',
                       2 => 'e',
                       3 => 'l',
                       4 => 'l',
                       5=> 'o',
                       others => Character'Val(0));
Run Code Online (Sandbox Code Playgroud)

这显然远非理想.

另一种方法是在Ada.Strings.Fixed中使用Move过程.

Move(Target => s,
     Source => "Hello",
     Pad => Character'Val(0));
Run Code Online (Sandbox Code Playgroud)

但这不能在声明中完成.

最后,这编译:

s : String(1..256) := "Hello" & (6..256 => Character'Val(0));
Run Code Online (Sandbox Code Playgroud)

但我发现它不太清楚