Как зациклить, чтобы получить int из stdinput, игнорируя пробелы

Поэтому я могу легко получить искомое значение int из моего файла.txt через стандартный ввод, но когда перед ним есть пробел (или несколько пробелов), он не работает и возникает ошибка данных, так как его хотя integer мой код ниже, который работает для захвата строки, не работает, когда я помещаю туда 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 ответа

ajb был прав: целые числа уже прошли проверку пробелов, мой код только испортил его. Для получения целых не требуется цикл, но он хорошо работает для String's/Characters.

Таким образом, вы можете использовать атрибут 'Value для перехода от строки к int и' ​​Image для перехода от int к строке. Это атрибуты в Аде. Изучение того, как эффективно использовать атрибуты, определенно увеличит вашу производительность 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

Если вам нужна помощь в повторении этой идеи и преобразовании исходного вопроса в несколько иной метод, дайте мне знать. Я с удовольствием поработаю с вами над этим;)

Другие вопросы по тегам