Ada 如何循环从stdinput获取int,忽略空白

Ada 如何循环从stdinput获取int,忽略空白,ada,ada2012,Ada,Ada2012,因此,我可以通过标准输入轻松地从.txt文件中获取我要查找的int值,但当前面有一个空格(或多个空格)时,它不起作用,并且会发生数据错误,因为它是一个整数,下面的代码用于获取字符串,当我在里面放一个int时不起作用,因为你不能比较int和String。有什么解决办法吗 Until_loop: -- Loop to get chars even if space is between loop get(int_variable)

因此,我可以通过标准输入轻松地从.txt文件中获取我要查找的int值,但当前面有一个空格(或多个空格)时,它不起作用,并且会发生数据错误,因为它是一个整数,下面的代码用于获取字符串,当我在里面放一个int时不起作用,因为你不能比较int和String。有什么解决办法吗

 Until_loop:                 -- Loop to get chars even if space is between
       loop 

         get(int_variable);

     exit Until_loop when int_variable) /= " ";   --won't work

     end loop Until_loop;

ajb是对的整数已经进入空格检查,我的代码只是把它搞乱了。获取整数不需要循环,但它适用于字符串/字符。

因此您可以使用“值属性”从字符串转到整数,使用“图像”从整数转到字符串。这些是Ada中的属性。学习如何有效地使用属性肯定会提高Ada的生产率

基本上我认为这就是你想要的。您可以在中读取字符串,并使用

with Ada.Text_IO; use Ada.Text_IO;
procedure Foo is
    Str: String(1 .. 10) := (others => ' ');
    Last_Char : Integer;
begin
    Put("Enter num: ");
    Get_Line(Str, Last_Char);
    Put_Line("Str = """ & Str & """");
    Put_Line("Last = " & Integer'Image(Last_Char));
    Put_Line("The num is " & Integer'Value(Str));
end Foo;
它产生以下输出:

Enter num: 1239
Str = "1239      "
Last_Char =  4
The num is 1239

如果你想帮助我重复这个想法,并将你原来的问题转化成一个稍微不同的方法,请告诉我。我将很乐意与您合作;)

查看前瞻性程序。如果显示空白字符,则获取该字符(到字符变量)。继续这样做,直到你看到一个数字(或+或-)。但我要做的是把整条线作为一根线,然后把它分开。如果您知道字符串的一个片段(如
表达式(Start..End)
是整数,那么当我尝试使用前面的look_时,`int_variable:=integer'值(表达式(Start..End);'将使用“value属性”将该片段转换为整数_行的参数End_缺少参数,上下文需要函数调用,找到过程名称。“这就是为什么我把它称为过程,而不是函数。找到文档应该不难——比如。我推荐约翰·巴恩斯的书作为一本严肃的参考书。有关使用前瞻性的更多信息:
get
在整数上应该跳过前导空格(见第8段),所以我不清楚你的问题是什么。如果你正在做的事情比从一个以空格分隔的文件中读取整数更复杂,那么我同意Brian的第二句话,阅读整行内容并自己处理。