string
class has been briefly introduced in an earlier chapter. It is a very powerful class to handle and manipulate strings of characters. However, because strings are, in fact, sequences of characters, we can represent them also as plain arrays of elements of a character type.
|
|
char
. It can be represented as:"Hello"
or the sequence "Merry Christmas"
can be stored in foo
, since both would fit in a sequence with a capacity for 20 characters.'\0'
(backslash, zero).char
called foo
can be represented storing the character sequences "Hello"
and "Merry Christmas"
as:'\0'
) has been added in order to indicate the end of the sequence. The panels in gray color represent char
elements with undetermined values.
|
|
char
initialized with the characters that form the word "Hello"
plus a null character '\0'
at the end."
). For example:
|
|
"
) are literal constants. And their type is, in fact, a null-terminated array of characters. This means that string literals always have a null character ('\0'
) automatically appended at the end.myword
can be initialized with a null-terminated sequence of characters by either one of these two statements:
|
|
myword
is declared with a size of 6 elements of type char
: the 5 characters that compose the word "Hello"
, plus a final null character ('\0'
), which specifies the end of the sequence and that, in the second case, when using double quotes ("
) it is appended automatically.
|
|
|
|
|
|
string
), still, plain arrays with null-terminated sequences of characters (C-strings) are a natural way of representing strings in the language; in fact, string literals still always produce null-terminated character sequences, and not string
objects.cin
and cout
support null-terminated sequences directly, allowing them to be directly extracted from cin
or inserted into cout
, just like strings. For example:
|
|
What is your name? Homer Where do you live? Greece Hello, Homer from Greece! |
cin
and cout
, but there is a notable difference in their declarations: arrays have a fixed size that needs to be specified either implicit or explicitly when declared; question1
has a size of exactly 20 characters (including the terminating null-characters) and answer1
has a size of 80 characters; while strings are simply strings, no size is specified. This is due to the fact that strings have a dynamic size determined during runtime, while the size of arrays is determined on compilation, before the program runs.string
's member functions c_str
or data
:
|
|
c_str
and data
members of string
are equivalent)Previous: Arrays | Index | Next: Pointers |