3.6.3 String Types
A one-dimensional array type
whose component type is a character type is called a string type
[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:]
[subtype Positive is Integer range 1 .. Integer'Last;
String is array
Wide_String is array
Wide_Wide_String is array
NOTE String literals (see 2.6
) 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
Examples of string
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)
Ask_Twice : String := Question & Question; -- constrained to (1..40)
Ninety_Six : constant
Roman := "XCVI"; -- see 3.5.2 and 3.6
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
Incompatibilities With Ada 83
Because both String and
Wide_String are always directly visible, an expression like
"a" < "bc"
is now ambiguous, whereas in Ada 83 both string
literals could be resolved to type String.
Extensions to Ada 83
The type Wide_String is
new (though it was approved by ARG for Ada 83 compilers as well).
Wording Changes from Ada 83
We define the term string type as a natural
analogy to the term character type.
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.
Extensions to Ada 95
Ada 2005 and 2012 Editions sponsored in part by Ada-Europe