代码之家  ›  专栏  ›  技术社区  ›  Dan

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

  •  2
  • Dan  · 技术社区  · 6 年前

    我想初始化一个固定长度 String 在《美国残疾人法案》中,大致如下:

    S : String (1..256) := ("Hello", others => Character'Val (0));
    

    我在试图编译时出错。 有没有什么方法可以实现与上述类似的目标?

    2 回复  |  直到 6 年前
        1
  •  5
  •   Frédéric Praca    6 年前

    您的代码不编译的原因是字符串是一个字符数组,因此等价的

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

    这显然离理想还很远。

    另一种方法是在 Ada.Strings.Fixed .

    Move(Target => s,
         Source => "Hello",
         Pad => Character'Val(0));
    

    但这不能在声明中做。

    最后,它编译了:

    s : String(1..256) := "Hello" & (6..256 => Character'Val(0));
    

    但我觉得不太清楚

        2
  •  1
  •   Jeffrey R. Carter    6 年前

    我通常会做一些像

    Hello : constant String := "Hello";
    
    Desired_Length : constant := 256;
    
    S : String := Hello & (1 .. Desired_Length - Hello'Length => Character'Val (0) );
    

    (Hello'Length + 1 .. Desired_Length => ...);