Ada将Integer与String连接起来

Mar*_*ard 1 ada string-concatenation type-conversion

我需要将一个字符串与一个整数连接起来以创建唯一的文件名.

    I: Integer := 1;
    Base: String := "file";
    Suffix: String := ".data";

    -- Want to create file name as "Base + I + Suffix"
    file_name := "file1.data"
Run Code Online (Sandbox Code Playgroud)

我该怎么做呢?

是否更容易使用Integer索引整数字符/字符串数组,然后将所有三个连接在一起?

ajb*_*ajb 10

file_name : String := Base & Ada.Strings.Fixed.Trim(Integer'Image(I), Ada.Strings.Left) & Suffix;
Run Code Online (Sandbox Code Playgroud)

Integer'Image(I)I以字符串形式返回.如果I是非负的,则此函数返回一个以空格作为第一个字符的字符串; 该Trim函数删除前导空格(如果有).

并且使用它I作为字符串数组的索引并不容易.一方面,在 arrayStringAda中,所有的String元素必须是相同的长度,如果这是行不通的I可能>= 10.你必须使它成为一个访问String或数组的数组Unbounded_String.在任何情况下,您都必须设置数组,可能使用的循环Image非常类似于上面的代码,所以它不会更容易.


Jac*_*sen 5

扩展Brian的答案:

添加此功能:

function "&" (Left  : in String;
              Right : in Integer) return String is
begin
   return Left & To_String (Right);
end "&"
Run Code Online (Sandbox Code Playgroud)

会允许你写:

File_Name : constant String := Base & I & Suffix;
Run Code Online (Sandbox Code Playgroud)