stringclass 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.
foocan be represented storing the character sequences
'\0') has been added in order to indicate the end of the sequence. The panels in gray color represent
charelements with undetermined values.
charinitialized 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.
mywordcan be initialized with a null-terminated sequence of characters by either one of these two statements:
mywordis 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
coutsupport null-terminated sequences directly, allowing them to be directly extracted from
cinor inserted into
cout, just like strings. For example:
What is your name? Homer Where do you live? Greece Hello, Homer from Greece!
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;
question1has a size of exactly 20 characters (including the terminating null-characters) and
answer1has 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