如何用空格解析Ada中的字符串

时间:2014-11-02 04:10:26

标签: ada gnat

我正在使用Get_Line从用户那里获得输入, 字符串可以是一个命令后跟一个值(命令---一个或多个空格---值 - 新行),如

CMD  4
CMD 6
CMD        10

如何解析各个变量中的命令和值?

到目前为止,我可以在空格之前解析字符串,但是在空格之后如何获取值并将其转换为整数?

        for I in ip'Range loop
            if ip(I) = ' ' or ip(I) = HT then
                Put_Line(CMD);
                Put_Line(Integer'Image(Index));
            else
                CMD(I) := ip(I);
                Index := Index+1;
            end if;
        end loop;

-

由于

1 个答案:

答案 0 :(得分:2)

with Ada.Text_IO;

procedure Simple_Command_Parser_1 is
   type Commands is (CMD);
   type Values is range 4 .. 10;

   package Command_Text_IO is new Ada.Text_IO.Enumeration_IO (Commands);
   package Value_Text_IO   is new Ada.Text_IO.Integer_IO     (Values);

   Command : Commands;
   Value   : Values;
begin
   loop
      Command_Text_IO.Get (Command);
      Value_Text_IO.Get   (Value);
      Ada.Text_IO.Skip_Line;
   end loop;
end Simple_Command_Parser_1;