Programación en Ada/Tipos/Strings
En Ada los strings son un tipo especial de array que está implicitamente definido en el paquete Standard como:
type
Stringis
array
(Positiverange
<>)of
Character;
Que el rango se defina sobre el subtipo Positive implica que ningún string de Ada puede empezar en 0. Esta es una diferencia con los strings de C/C++, la otra es que un string de Ada no tiene por qué terminar en NUL (carácter de código 0), de hecho puede tener caracteres NUL intercalados. Esto es así porque los arrays de Ada siempre llevan asociados los límites (atributos 'First y 'Last).
Los literales de tipo String se encierran entre comillas.
Al ser String un array no restringido no podemos definir variables de ese tipo sin definir explícitamente o implícitamente los límites del array.
Nombre : String (1 .. 8); -- Explícitamente
Nombre : String :="Fulanito"
;-- Implícitamente
El operador & está definido para concatenar strings entre sí y caracteres con strings.
Nombre_Completo : constant
String := Nombre & ' ' & Apellidos;
Puesto que hay dos tipos de caracteres, hay también dos tipos de strings: String y Wide_String que es un array de Wide_Character. En Ada 2005 aparece también el tipo Wide_Wide_String cuyos elementos son Wide_Wide_Character.
Para facilitar el uso de los strings hay varios paquetes predefinidos para su manejo:
- Ada.Strings.Fixed: para strings de tamaño fijo.
- Ada.Strings.Bounded: para strings con longitud variable y un limite superior definido.
- Ada.Strings.Unbounded: para strings con longitud variable y sin límites de tamaño.
Para manejo de Wide_Strings existen otros tres paquetes predefinidos que se nombran anteponiendo Wide_ a cada uno.