Ada-从文本文件获取字符串并存储在数组中 [英] Ada - getting string from text file and store in array

查看:94
本文介绍了Ada-从文本文件获取字符串并存储在数组中的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

您好,我只是想知道如果我循环txt并将其存储在A_Composite名称中时如何将数据放入数组中。

Hi im just wondering how to put data in an array if i loop txt and store it in A_Composite Name.

procedure Main is
       type An_Array is array (Natural range <>) of A_Composite;
       type A_Composite is
          record
             Name  : Unbounded_String;
          end record;

       File       : Ada.Text_IO.File_Type;
       Line_Count : Integer := 0;


    begin
       Ada.Text_IO.Open (File => File,
                         Mode => Ada.Text_IO.In_File,
                         Name => "highscore.txt");

       while not Ada.Text_IO.End_Of_File (File) loop
          declare
                Line :String := Ada.Text_IO.Get_Line (File);            
          begin

             --I want to store Line String to array. but i don't know how to do it      

          end;
       end loop;
       Ada.Text_IO.Close (File);
end Main;


推荐答案

好,您这里的数组不受限制。这具有影响;您会看到在声明或初始化对象(一般而言,不是OOP)时,不受约束的数组会获得确定的长度。

Ok, you have an unconstrained array here. This has implications; you see an unconstrained array gains its definite length when the object (general sense, not OOP) is declared or initialized.

作为示例,让我们看一下字符串(其中无限制的字符数组),以查看其工作原理:

As an example, let's look at strings (which are unconstrained arrays of characters) for an example to see how this works:

-- Create a string of 10 asterisks; the initialization takes those bounds.
A : constant string(1..10):= (others => '*');

-- Create a string of 10 asterisks; but determined by the initialization value.
B : constant string := (1..10 => '*');

-- Another way of declaring a string of 10 asterisks.
C : constant string := ('*','*','*','*','*','*','*','*','*','*');

现在,您可以从函数调用中获得这些界限;这意味着我们可以使用函数调用来递归地返回这些值。

Now, you can get these bounds from a function call; this means that we can use function-calls to return these values recursively.

Function Get_Text return An_Array is
  Package Unbounded renames Ada.Strings.Unbounded;
  -- You'll actually want the Get_Line that takes a file.
  Function Get_Line return Unbounded.Unbounded_String
    renames Unbounded.Text_IO.Get_Line;
begin
  return (1 => (Name => Get_Line)) & Get_Text;
exception
  when End_Error => return ( 1..0 => (Name => Unbounded.Null_Unbounded_String) );
end Get_Text;

所以,这就是使用不受约束的数组的方式。

So, that's how you'd do it using an unconstrained array.

这篇关于Ada-从文本文件获取字符串并存储在数组中的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆