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