String assignment
The easiest way to assign a value to a string is to the use the overloaded operator= function. There is also an assign() member function that duplicates some of this functionality.
string& string::operator= (const string& str) string& string::assign (const string& str) string& string::operator= (const char* str) string& string::assign (const char* str) string& string::operator= (char c)
- These functions assign values of various types to the string.
- These functions return *this so they can be “chained”.
- Note that there is no assign() function that takes a single char.
Sample code:
04 | sString = string("One"); |
05 | cout << sString << endl; |
07 | const string sTwo("Two"); |
09 | cout << sString << endl; |
13 | cout << sString << endl; |
15 | sString.assign("Four"); |
16 | cout << sString << endl; |
20 | cout << sString << endl; |
24 | sString = sOther = "Six"; |
25 | cout << sString << " " << sOther << endl; |
Output:
One
Two
Three
Four
5
Six Six |
The assign() member function also comes in a few other flavors:
string& string::assign (const string& str, size_type index, size_type len) - Assigns a substring of str, starting from index, and of length len
- Throws an out_of_range exception if the index is out of bounds
- Returns *this so it can be “chained”.
Sample code:
1 | const string sSource("abcdefg"); |
4 | sDest.assign(sSource, 2, 4); |
Output:
cdef |
string& string::assign (const char* chars, size_type len) - Assigns len characters from the C-style array chars
- Ignores special characters (including ‘\0′)
- Throws an length_error exception if the result exceeds the maximum number of characters
- Returns *this so it can be “chained”.
Sample code:
3 | sDest.assign("abcdefg", 4); |
Output:
abcd This function is potentially dangerous and it’s use is not recommended.
|
string& string::assign (size_type len, char c) - Assigns len occurrences of the character c
- Throws an length_error exception if the result exceeds the maximum number of characters
- Returns *this so it can be “chained”.
Sample code:
Output:
gggg |
Swapping
If you have two strings and want to swap their values, there are two functions both named swap() that you can use.
void string::swap (string &str) void swap (string &str1, string &str2) - Both functions swap the value of the two strings. The member function swaps *this and str, the global function swaps str1 and str2.
- These functions are efficient and should be used instead of assignments to perform a string swap.
Sample code:
4 | cout << sStr1 << " " << sStr2 << endl; |
6 | cout << sStr1 << " " << sStr2 << endl; |
8 | cout << sStr1 << " " << sStr2 << endl; |
Output:
red blue
blue red
red blue
No comments:
Post a Comment