我想在Ada中初始化一个固定长度的字符串或多或少如下:
S:String(1..256):=(“Hello”,其他=> Character’Val(0));我在尝试编译时遇到错误。在那儿 …
您的代码无法编译的原因是String是一个Character数组,因此等效
s : String(1..256) := (1 => 'H', 2 => 'e', 3 => 'l', 4 => 'l', 5=> 'o', others => Character'Val(0));
这显然远非理想。
另一种方法是使用Move过程 Ada.Strings.Fixed 。
Move(Target => s, Source => "Hello", Pad => Character'Val(0));
但这不能在宣言中完成。
最后,这编译:
s : String(1..256) := "Hello" & (6..256 => Character'Val(0));
但我发现它不太清楚
我通常会这样做
Hello : constant String := "Hello"; Desired_Length : constant := 256; S : String := Hello & (1 .. Desired_Length - Hello'Length => Character'Val (0) );
要么
(Hello'Length + 1 .. Desired_Length => ...);