在第一个空格处切弦

时间:2020-02-25 19:57:12

标签: ada

我正在为Ada主程序制作自己的程序包。我读了一个字符串,后跟一个整数和另一个字符串,问题是我需要在第一个空格的符号处切掉第一个字符串。我不知道该怎么做,我只是搜索堆栈溢出来寻找其他语言的解决方案。

我现在在程序包主体中的代码是:

Get_Line(Item.String, Item.X1)

其中X1是整数,String是字符串。如果您在类型中定义长度以匹配输入的确切长度,则此方法有效,但是您当然希望能够插入所需的任何内容,因此不起作用。

有人可以指出我正确的方向吗?

谢谢

1 个答案:

答案 0 :(得分:3)

为什么需要为Ada主程序制作程序包?大多数编译器都需要它们成为无参数的库级过程。

无论如何,这可能会给您一些提示。

with Ada.Text_IO;
with Ada.Integer_Text_IO;
procedure Agrell is
begin
   declare
      Line : constant String := Ada.Text_IO.Get_Line;

这是处理读取未知长度的字符串的方法。您必须弄清楚如何保存它以备将来使用(也许使用Unbounded_String?)

      The_Integer : Integer;
   begin
      Looking_For_Space :
      for J in Line'Range loop
         if Line (J) = ' ' then

Line’FirstJ - 1的所有内容都是您想要的字符串。

            declare
               Dummy : Positive;
            begin
               Ada.Integer_Text_IO.Get (From => Line (J .. Line'Last),
                                        Item => The_Integer,
                                        Last => Dummy);
            end;

好的,现在我们有了The Integer ...

            ...
            exit Looking_For_Space;

...,第一行就结束了。

         end if;
      end loop Looking_For_Space;
   end;
end Agrell;
相关问题