std::string class in C - JohnHau/mis GitHub Wiki

C++ has in its definition a way to represent a sequence of characters as an object of the class. This class is called std:: string. String class stores the characters as a sequence of bytes with the functionality of allowing access to the single-byte character.

std:: string vs Character Array: A character array is simply an array of characters that can be terminated by a null character. A string is a class that defines objects that be represented as a stream of characters.

The size of the character array has to be allocated statically, more memory cannot be allocated at run time if required. Unused allocated memory is wasted in the case of the character array. In the case of strings, memory is allocated dynamically. More memory can be allocated at run time on demand. As no memory is preallocated, no memory is wasted.

There is a threat of array decay in the case of the character array. As strings are represented as objects, no array decay occurs.

Implementation of character array is faster than std:: string. Strings are slower when compared to implementation than character array.

Character arrays do not offer many inbuilt functions to manipulate strings. String class defines a number of functionalities that allow manifold operations on strings.

image

Let’s look at the following example,

// C++ Program to demonstrate the working of // getline(), push_back() and pop_back() #include #include // for string class using namespace std;

// Driver Code int main() { // Declaring string string str;

// Taking string input using getline()
getline(cin, str);

// Displaying string
cout << "The initial string is : ";
cout << str << endl;

// Inserting a character
str.push_back('s');

// Displaying string
cout << "The string after push_back operation is : ";
cout << str << endl;

// Deleting a character
str.pop_back();

// Displaying string
cout << "The string after pop_back operation is : ";
cout << str << endl;

return 0;

} Input

geeksforgeek Output

The initial string is : geeksforgeek The string after push_back operation is : geeksforgeeks The string after pop_back operation is : geeksforgeek 2) Capacity Functions:

Function Definition capacity() This function returns the capacity allocated to the string, which can be equal to or more than the size of the string. Additional space is allocated so that when the new characters are added to the string, the operations can be done efficiently. resize() This function changes the size of the string, the size can be increased or decreased. length() This function finds the length of the string. shrink_to_fit() This function decreases the capacity of the string and makes it equal to the minimum capacity of the string. This operation is useful to save additional memory if we are sure that no further addition of characters has to be made. Let’s look at the following example:

// C++ Program to demonstrate the working of // capacity(), resize() and shrink_to_fit() #include #include // for string class using namespace std;

// Driver Code int main() { // Initializing string string str = "geeksforgeeks is for geeks";

// Displaying string
cout << "The initial string is : ";
cout << str << endl;

// Resizing string using resize()
str.resize(13);

// Displaying string
cout << "The string after resize operation is : ";
cout << str << endl;

// Displaying capacity of string
cout << "The capacity of string is : ";
cout << str.capacity() << endl;

// Displaying length of the string
cout << "The length of the string is :" << str.length()
     << endl;

// Decreasing the capacity of string
// using shrink_to_fit()
str.shrink_to_fit();

// Displaying string
cout << "The new capacity after shrinking is : ";
cout << str.capacity() << endl;

return 0;

} Output The initial string is : geeksforgeeks is for geeks The string after resize operation is : geeksforgeeks The capacity of string is : 26 The length of the string is :13 The new capacity after shrinking is : 15 3) Iterator Functions:

Function Definition begin() This function returns an iterator to the beginning of the string. end() This function returns an iterator to the end of the string. rbegin() This function returns a reverse iterator pointing at the end of the string. rend() This function returns a reverse iterator pointing at beginning of the string. Let’s look at the following example:

// C++ Program to demonstrate the working of // begin(), end(), rbegin(), rend() #include #include // for string class using namespace std;

// Driver Code int main() { // Initializing string` string str = "geeksforgeeks";

// Declaring iterator
std::string::iterator it;

// Declaring reverse iterator
std::string::reverse_iterator it1;

// Displaying string
cout << "The string using forward iterators is : ";
for (it = str.begin(); it != str.end(); it++)
    cout << *it;
cout << endl;

// Displaying reverse string
cout << "The reverse string using reverse iterators is "
        ": ";
for (it1 = str.rbegin(); it1 != str.rend(); it1++)
    cout << *it1;
cout << endl;

return 0;

} Output The string using forward iterators is : geeksforgeeks The reverse string using reverse iterators is : skeegrofskeeg 4) Manipulating Functions:

Function Definition copy(“char array”, len, pos) This function copies the substring in the target character array mentioned in its arguments. It takes 3 arguments, target char array, length to be copied, and starting position in the string to start copying. swap() This function swaps one string with other. Let’s look at the following example:

// C++ Program to demonstrate the working of // copy() and swap() #include #include // for string class using namespace std;

// Driver Code int main() { // Initializing 1st string string str1 = "geeksforgeeks is for geeks";

// Declaring 2nd string
string str2 = "geeksforgeeks rocks";

// Declaring character array
char ch[80];

// using copy() to copy elements into char array
// copies "geeksforgeeks"
str1.copy(ch, 13, 0);

// Displaying char array
cout << "The new copied character array is : ";
cout << ch << endl;

// Displaying strings before swapping
cout << "The 1st string before swapping is : ";
cout << str1 << endl;
cout << "The 2nd string before swapping is : ";
cout << str2 << endl;

// using swap() to swap string content
str1.swap(str2);

// Displaying strings after swapping
cout << "The 1st string after swapping is : ";
cout << str1 << endl;
cout << "The 2nd string after swapping is : ";
cout << str2 << endl;

return 0;

} Output The new copied character array is : geeksforgeeks The 1st string before swapping is : geeksforgeeks is for geeks The 2nd string before swapping is : geeksforgeeks rocks The 1st string after swapping is : geeksforgeeks rocks The 2nd string after swapping is : geeksforgeeks is for geeks

⚠️ **GitHub.com Fallback** ⚠️