Ada: Erste Benutzereingabe, um einen String(1..10) und füllen den rest mit Leerzeichen

Ich habe

subtype String10 is String(1..10);

und ich bin versucht zu bekommen Tastatur-Eingaben auf, ohne dass manuell eingeben von Leerzeichen drücken Sie enter. Ich habe versucht, get_line (), aber aus irgendeinem Grund würde es nicht eigentlich warten, bis Eingang vor der Ausgabe der get put () - Befehl, und ich denke auch, es wird nur verlassen, was war in der Zeichenfolge, bevor Sie es und nicht füllen Sie ihn mit Leerzeichen.

Ich kennen und benutzt haben Bounded_String und Unbounded_String, aber ich Frage mich, ob es einen Weg gibt, um diese Arbeit zu machen.

Ich habe versucht, eine Funktion für Sie:

--getString10--
procedure getString10(s : string10) is
   c : character;
   k : integer;
begin
   for i in integer range 1..10 loop
      get(c);
      if Ada.Text_IO.End_Of_Line = false then
         s(i) := c;
      else
         k := i;
         exit;
      end if;
   end loop;

   for i in integer range k..10 loop
      s(i) := ' ';
   end loop;
end getString10;

aber, ich weiß, hier die s(i) funktioniert nicht, und ich glaube nicht, dass die

"if Ada.Text_IO.End_Of_Line = false then" 

tut, was ich hoffe, es wird entweder zu tun. Es ist irgendwie nur ein Platzhalter, während ich für die tatsächliche Art und Weise, es zu tun.

Ich war auf der Suche für ein paar Stunden jetzt, aber Ada Dokumentation ist nicht als verfügbar oder klar als andere Sprachen. Ich habe eine Menge über erste-Zeichenfolgen, aber nicht das, was ich Suche.

  • Vergleiche auf Gleichheit zu true und false sind nicht besonders klar. Anstatt if Ada.Text_IO.End_Of_Line = false then haben, schreiben Sie einfach if not Ada.Text_IO.End_Of_Line then. (Obwohl ich glaube nicht, dass Sie brauchen, um zu verwenden End_Of_Line sowieso.)
InformationsquelleAutor user1279914 | 2012-12-01
Schreibe einen Kommentar