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 |