The string header file in C++ allows us to use string objects. Previously we didn't have
these objects, we then used the strings as an array of characters but now strings are more
easier to use. There are 9 ways by which the strings can be initialized in C++11:
(1) empty string constructor (default constructor)
Constructs an empty string, with a length of zero characters.
(2) copy constructor
Constructs a copy of str.
string (const string& str);
(3) substring constructor
Copies the portion of str that begins at the character position pos and spans len
characters (or until the end of str, if either str is too short or if len is
string (const string& str, size_t pos, size_t len = npos);
(4) from c-string
Copies the null-terminated character sequence (C-string) pointed by s.
string (const char* s);
(5) from buffer
Copies the first n characters from the array of characters pointed by s.
string (const char* s, size_t n);
(6) fill constructor
Fills the string with n consecutive copies of character c.
string (size_t n, char c);
(7) range constructor
Copies the sequence of characters in the range [first,last), in the same order.
template <class InputIterator>
string (InputIterator first, InputIterator last);
(8) initializer list
Copies each of the characters in il, in the same order.
string (initializer_list<char> il);
(9) move constructor
Acquires the contents of str. str is left in an unspecified but valid state.
string (string&& str) noexcept;
Parameters used are:
str: It is another string object, whose value is either copied or acquired.
pos: Position of the first character in str that is copied to the object as a substring. If
this is greater than str's length, it throws out_of_range.
Note: The first character in str is denoted by a value of 0 (not 1).
len: Length of the substring to be copied (if the string is shorter, as many characters as
possible are copied). A value of string::npos indicates all characters until the end
s: Pointer to an array of characters (such as a c-string).
n: Number of characters to copy.
c: Character to fill the string with. Each of the n characters in the string will be
initialized to a copy of this value.
first, last: Input iterators to the initial and final positions in a range. The range used
is [first,last), which includes all the characters between first and last,
including the character pointed by first but not the character pointed by last.
The function template argument InputIterator shall be an input iterator type
that points to elements of a type convertible to char.
If InputIterator is an integral type, the arguments are casted to the proper
types so that signature (5) is used instead.
il: An initializer_list object. These objects are automatically constructed from initializer
using namespace std;
int main ()
string s0 ("CppSecrets");
// constructors used in the same order as described above:
string s2 (s0);
string s3 (s0, 0, 3);
string s4 ("An array of characters");
string s5 ("Another character sequence", 12);
string s6a (10, 'v');
string s6b (10, 42); // 42 is the ASCII code for '*'
string s7 (s0.begin(), s0.begin()+9);
cout << "s1: " << s1 << "\ns2: " << s2 << "\ns3: " << s3;
cout << "\ns4: " << s4 << "\ns5: " << s5 << "\ns6a: " << s6a;
cout << "\ns6b: " << s6b << "\ns7: " << s7 << '\n';