1
{string type} A one−dimensional array type whose component type is a character type is called a string type.
2/2
{00285AI95−00285−01} [There are three predefined string types, String, Wide_String, and Wide_Wide_String, each indexed by values of the predefined subtype Positive; these are declared in the visible part of package Standard:]
3
[subtype Positive is Integer range 1 .. Integer'Last;
4/2
{00285AI95−00285−01} type String is array(Positive range <>) of Character; type Wide_String is array(Positive range <>) of Wide_Character; type Wide_Wide_String is array(Positive range <>) of Wide_Wide_Character; ]
NOTES
5
51 String literals (see 2.6 and 4.2) are defined for all string types. The concatenation operator & is predefined for string types, as for all nonlimited one−dimensional array types. The ordering operators <, <=, >, and >= are predefined for string types, as for all one−dimensional discrete array types; these ordering operators correspond to lexicographic order (see 4.5.2).
6
Examples of string objects:
7
Stars : String(1 .. 120) := (1 .. 120 => '*' ); Question : constant String := "How many characters?"; −− Question'First = 1, Question'Last = 20 −− Question'Length = 20 (the number of characters)
8
Ask_Twice : String := Question & Question; −− constrained to (1..40) Ninety_Six : constant Roman := "XCVI"; −− see 3.5.2 and 3.6
8.a
{inconsistencies with Ada 83} The declaration of Wide_String in Standard hides a use−visible declaration with the same defining_identifier. In rare cases, this might result in an inconsistency between Ada 83 and Ada 95.
8.b
{incompatibilities with Ada 83} Because both String and Wide_String are always directly visible, an expression like
8.c
"a" < "bc"
8.d
is now ambiguous, whereas in Ada 83 both string literals could be resolved to type String.
8.e
{extensions to Ada 83} The type Wide_String is new (though it was approved by ARG for Ada 83 compilers as well).
8.f
We define the term string type as a natural analogy to the term character type.
8.g/2
{00285AI95−00285−01} {inconsistencies with Ada 95} The declaration of Wide_Wide_String in Standard hides a use−visible declaration with the same defining_identifier. In the (very) unlikely event that an Ada 95 program had depended on such a use−visible declaration, and the program remains legal after the substitution of Standard.Wide_Wide_String, the meaning of the program will be different.
8.h/2
{00285AI95−00285−01} {extensions to Ada 95} The type Wide_Wide_String is new.