Ada: Obtenir des commentaires d'utilisateurs pour un String(1..10) et remplir le reste avec un espace

J'ai défini

subtype String10 is String(1..10);

et je suis d'essayer d'obtenir de clavier d'entrée sans avoir à saisir manuellement les espaces avant d'appuyer sur la touche enter. J'ai essayé get_line (), mais par une raison quelconque, il ne serait pas fait attendre pour l'entrée avant de sortir le get, put() de commande, et je pense aussi qu'il va juste laisser ce qui était dans la chaîne de l'avant et de ne pas le remplir avec de l'espace blanc.

Je connais et qui ont utilisé Bounded_String et Unbounded_String, mais je me demande si il existe un moyen de faire ce travail.

J'ai essayé de faire une fonction pour ça:

--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;

mais, ici, je sais que le s(i) ne fonctionne pas, et je ne pense pas que le

"if Ada.Text_IO.End_Of_Line = false then" 

fait ce que je suis en espérant que cela ne soit. C'est un peu juste un espace réservé pendant que je regarde pour la façon de le faire.

J'ai été la recherche de quelques heures maintenant, mais Ada documentation n'est pas disponible clair que dans d'autres langues. J'ai trouvé beaucoup de choses sur obtenir les cordes, mais pas ce que je suis à la recherche d'.

L'égalité des comparaisons à true et false ne sont pas particulièrement clair. Plutôt que de if Ada.Text_IO.End_Of_Line = false then, il suffit d'écrire if not Ada.Text_IO.End_Of_Line then. (Bien que je ne pense pas que vous devez utiliser End_Of_Line de toute façon.)

OriginalL'auteur user1279914 | 2012-12-01