Как зациклить, чтобы получить 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
Если вам нужна помощь в повторении этой идеи и преобразовании исходного вопроса в несколько иной метод, дайте мне знать. Я с удовольствием поработаю с вами над этим;)