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

时间:2015-03-01 22:03:44

标签: ada ada2012

所以我可以通过标准输入从我的.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;

2 个答案:

答案 0 :(得分:0)

ajb是正确的整数已经进行了空间检查,我的代码只是弄乱了它。获取整数不需要循环,但它适用于字符串/字符。

答案 1 :(得分:0)

因此,您可以使用' Value属性从string转到int,并使用' Image从int转到string。这些是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

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