Ada 如何读取每个单词并将其存储到变量中以供使用?

Ada 如何读取每个单词并将其存储到变量中以供使用?,ada,Ada,我是艾达的新手。语法让我很反感。我在Java工作了6年,这与我们在Java中的工作类似,但我不能让它工作。我正在使用learn.adacore.com学习 with Ada.Text_IO; Use Ada.Text_IO; with Ada.Integer_Text_IO; use Ada.Integer_Text_IO; with Ada.Float_Text_IO; use Ada.Float_Text_IO; procedure TextFile is F : Fil

我是艾达的新手。语法让我很反感。我在Java工作了6年,这与我们在Java中的工作类似,但我不能让它工作。我正在使用learn.adacore.com学习

with Ada.Text_IO; Use Ada.Text_IO;
with Ada.Integer_Text_IO; use Ada.Integer_Text_IO;
with Ada.Float_Text_IO; use Ada.Float_Text_IO;

procedure TextFile is

   F      : File_Type;
   File_Name : constant String := "Store.txt";
begin
   
   Open (F, In_File, File_Name);
   
   while not End_Of_File (F) loop
      Put_Line (Get_Line (F));
   end loop;
   Close (F);
   
end TextFile;
这是我的文本文件Store.txt

Code    Department  Name/Vendor  Title          ID      Payrate
IL      Sales       John         Sales_person   1378    25.46

如果您不介意不同Ada编译器之间的可移植性,可以使用包GNAT.String_Split将整行拆分为分隔字符串值的数组:

with Ada.Text_IO;       use Ada.Text_IO;
with GNAT.String_Split; use GNAT.String_Split;

procedure TextFile is
   File   : File_Type;
   Tokens : Slice_Set;
begin
   Open (File, In_File, "Store.txt");
   -- Skip the file header
   Skip_Line (File);
   -- Read the data
   while not End_Of_File (File) loop
      -- Split the line from the file on array which contains separated
      -- words. Treat multiple spaces as a single separator (don't
      -- create empty elements).
      Create (Tokens, Get_Line (File), " ", Multiple);
      -- Print each of the array's values
      for I in 1 .. Slice_Count (Tokens) loop
         Put_Line (Slice (Tokens, I));
      end loop;
   end loop;
   Close (File);
end TextFile;

我不知道这是否有帮助,但请尝试指定Get\u行或Put\u行来自哪个包。例如,使用Ada.Text\u IO.Get\u Line(F)或Ada.Integer\u Text\u IO.Get\u Line(F)可能是因为你的英语不好,但我不明白你在问什么。您的标题是关于阅读单词(一个未定义的概念),但您的代码只阅读行。您说它不工作,但您的代码编译良好(警告未使用Ada.Integer\u Text\u IO和Ada.Float\u Text\u IO)。