@@ -3,6 +3,146 @@ Strings
33
44.. include :: ../../../global.txt 
55
6+ .. _Adv_Ada_Character_String_Literals :
7+ 
8+ Character and String Literals
9+ ----------------------------- 
10+ 
11+ So far, we're already seen many examples of string literals |mdash | both in
12+ the :ref: `Introduction to Ada  <Intro_Ada_Course_Index >` course and in the
13+ present course. In this section, we define them once more and discuss a couple
14+ of details about them.
15+ 
16+ 
17+ Character Literals
18+ ~~~~~~~~~~~~~~~~~~ 
19+ 
20+ A character literal is simply a character between apostrophes (or
21+ *single quotation marks *). For example:
22+ 
23+ .. code :: ada run_button project=Courses.Advanced_Ada.Data_Types.Strings.Character_String_Literals.Character_Literals 
24+ 
25+     with Ada.Text_IO; use Ada.Text_IO;
26+ 
27+     procedure Show_Character_Literals is
28+        C   : Character := 'a';
29+        --                 ^^^
30+        --           Character literal
31+     begin
32+        Put_Line ("Character : " & C);
33+     end Show_Character_Literals;
34+ 
35+ In this example, we initialize the character variable :ada: `C ` with the
36+ character literal :ada: `'a' `.
37+ 
38+ 
39+ String Literals
40+ ~~~~~~~~~~~~~~~ 
41+ 
42+ A string literal is simply a collection of characters between quotation marks.
43+ For example:
44+ 
45+ .. code :: ada run_button project=Courses.Advanced_Ada.Data_Types.Strings.Character_String_Literals.Simple_String_Literals 
46+ 
47+     with Ada.Text_IO; use Ada.Text_IO;
48+ 
49+     procedure Show_Simple_String_Literals is
50+        S1 : String := "Hello";
51+        --             ^^^^^^^
52+        --         String literal
53+ 
54+        S2 : String := "World";
55+        --             ^^^^^^^
56+        --           String literal
57+     begin
58+        Put_Line (S1 & " " & S2);
59+     end Show_Simple_String_Literals;
60+ 
61+ In this example, :ada: `"Hello" ` and :ada: `"World" ` are string literals.
62+ 
63+ 
64+ String literals with quotation
65+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 
66+ 
67+ If you want to include a quotation mark in a string literal, you have to write
68+ :ada: `"" ` (inside that string literal):
69+ 
70+ .. code :: ada run_button project=Courses.Advanced_Ada.Data_Types.Strings.Character_String_Literals.String_Literals_With_Quotes 
71+ 
72+     with Ada.Text_IO; use Ada.Text_IO;
73+ 
74+     procedure Show_String_Literals_With_Quotes is
75+        S1 : String := "Hello";
76+        S2 : String := "World";
77+     begin
78+        Put_Line ("  "" " & S1
79+        --           ^^
80+        --       Quotation marks
81+                  & " " & S2 & " ""  ");
82+        --                       ^^
83+        --       Quotation marks
84+ 
85+        Put_Line ("""Hello World!""");
86+        --         ^^            ^^
87+        --          Quotation marks
88+ 
89+        Put_Line ("""""");
90+        --         ^^^^
91+        --    Quotation marks
92+     end Show_String_Literals_With_Quotes;
93+ 
94+ In this example, we display ``" Hello World " `` to the user by adding
95+ quotation marks to the concatenated strings in the call to :ada: `Put_Line `.
96+ 
97+ Note that the three quotation marks at the beginning of
98+ :ada: `"""Hello World!""" ` consist of the quotation mark that indicate the
99+ beginning of the string literal and the two quotation marks that represent a
100+ single quotation mark inside the string literal. (The same thing happens at the
101+ end of this string literal, but in reverse.) This string literal is displayed
102+ as ``"Hello World!" `` to the user.
103+ 
104+ Finally, the string literal :ada: `"""""" ` is displayed as ``"" `` to the
105+ user.
106+ 
107+ 
108+ Empty string literals
109+ ^^^^^^^^^^^^^^^^^^^^^ 
110+ 
111+ An empty string is represented by quotation marks without characters in
112+ between: :ada: `"" `. For example:
113+ 
114+ .. code :: ada run_button project=Courses.Advanced_Ada.Data_Types.Strings.Character_String_Literals.Empty_String_Literals 
115+ 
116+     with Ada.Text_IO; use Ada.Text_IO;
117+ 
118+     procedure Show_Empty_String_Literals is
119+        S1 : String          := "";
120+        S2 : String (1 .. 0) := "";
121+     begin
122+        Put_Line (S1);
123+        Put_Line (S2);
124+        Put_Line ("");
125+     end Show_Empty_String_Literals;
126+ 
127+ Note that an empty string is an array of characters without any components.
128+ This is made explicit by the declaration of :ada: `S2 `. Here, by using the range
129+ :ada: `1 .. 0 `, we're declaring an empty array.
130+ 
131+ .. todo ::
132+ 
133+     Add link to subsection on empty arrays.
134+ 
135+ .. admonition :: In other languages 
136+ 
137+     In C, an empty string still contains a single character: the null character
138+     (``\0 ``). In Ada, however, an empty string doesn't have any characters.
139+ 
140+ .. admonition :: In the Ada Reference Manual 
141+ 
142+     - :arm22: `2.5 Character Literals <2-5> `
143+     - :arm22: `2.6 String Literals <2-6> `
144+ 
145+ 
6146.. _Adv_Ada_Wide_Wide_Strings :
7147
8148Wide and Wide-Wide Strings
0 commit comments