我正在为Ada主程序制作自己的程序包。我读了一个字符串,后跟一个整数和另一个字符串,问题是我需要在第一个空格的符号处切掉第一个字符串。我不知道该怎么做,我只是搜索堆栈溢出来寻找其他语言的解决方案。
我现在在程序包主体中的代码是:
Get_Line(Item.String, Item.X1)
其中X1是整数,String是字符串。如果您在类型中定义长度以匹配输入的确切长度,则此方法有效,但是您当然希望能够插入所需的任何内容,因此不起作用。
有人可以指出我正确的方向吗?
谢谢
答案 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’First
到J - 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;