C++ is a widely popular general-purpose programming language based partially on Object-Oriented Programming (OOPs) concepts. It allows you to work with text and characters through C++ strings. In this article, you will learn everything about the String class.
What is a C++ String?
C++ string is a way of representing and working with texts and characters. It has two different types of string representations: C-style character string and String class introduced in C++.
C-Style Character String
The C-style character string was a part of the C programming language and is now supported in C++. It is like a one-dimensional character array that holds a character sequence and is terminated with a null character. Thus, if you create a C-style character string to keep the word “Hello,” it will contain the characters, ‘H’, ‘e’, ‘l’, ‘l’, ‘o’, ‘\0.’
Here, you only need to ask the compiler to hold the word “Hello” in a string. But it will still include a character “\0” in the end by default. Look at an example to see how you can use the character array to create and store a C-style character string in a variable.
#include <iostream>
using namespace std;
int main (){
char greet[6] = {'H', 'e', 'l', 'l', 'o', '\0'};
cout << "This is a greeting message: ";
cout << greet << endl;
return 0;
}
Output:
C++ String Class Introduced in C++
C++ is based on the OOPs concept; it enables you to represent the string as an object of the C++ String class (std:: string). The class allows you to declare a string variable quickly, and store any sequence of characters in it. Here’s an example of representing a string with the help of the String class.
#include <iostream>
using namespace std;
int main(){
string greet = "Hello";
cout << "This is a greeting message: ";
cout<<greet<<endl;
}
Output:
As you can see in the above output, it eliminates the need for declaring an array to hold characters.
What is the Difference Between C++ String and Character Array?
Although both the C-style character string and the C++ String class are used for string representation, there are a few differences. Some of the primary differences are:
- Character array is an array, but a string is a class that defines an object.
- Character array size is pre-allocated statically. Hence, extra memory is not available during runtime, and it wastes the memory that is not used. Since string size is not pre-allocated, there is no wastage, and extra memory is available during run time.
- Character array has the risk of array decay, but that is not the case with string.
- Strings are slower than character arrays when it comes to implementation.
- The String class offers more in-built functions to work with and manipulate strings.
C++ String Built-In Functions to Perform Operations on Strings
As mentioned in the previous section, the C++ String class provides many built-in, predefined functions to manipulate strings. In this section, you will go through some primary functions and see them in action, along with examples.
C++ String Input Functions
The input functions help add or remove a character or string to a string. Examples of input functions are:
Function |
Description |
getline() |
Used to read and store a string that the user enters through the input stream |
push_back() |
Inputs a new character to the string’s end |
pop_back() |
Pops out (deletes) a string’s last character (introduced from C++11) |
Example: Using C++ String Input Functions
#include<iostream>
#include<string>
using namespace std;
int main(){
// Declaring a string variable
string s;
cout << "Enter a string: ";
// Using getline() to accept input
// We will give Simplilearn as the input
getline(cin,s);
// Displaying the entered string
cout << "This is initial string : ";
cout << s << endl;
// Inserting a character i at the end of the string
// using the push_back function
s.push_back('i');
// Displaying the string after push_back
cout << "The new string is : ";
cout << s << endl;
// Deleting the i from the end using pop_back
s.pop_back();
// Displaying the string after pop_back
cout << "After pop_back operation, the string is : ";
cout << s << endl;
return 0;
}
Output:
C++ String Iterator Functions
As the name gives out, the iterator functions are used to work with the iterators that traverse through each character of a string.
Function |
Description |
begin() |
Returns the iterator to the beginning |
end() |
Returns the iterator to the end |
rbegin() |
Returns a reverse iterator that points to the end |
rend() |
Returns a reverse iterator that points to the start |
Example: Using String Class’s Iterator Functions
#include<iostream>
#include<string>
using namespace std;
int main(){
string s = "Simplilearn";
// Declaring the iterator
std::string::iterator iter;
// Declaring iterator for reverse functions
std::string::reverse_iterator iter1;
// Displaying string
cout << "Using forward iterators : ";
for (iter=s.begin(); iter!=s.end(); iter++)
cout << *iter;
cout << endl;
// Displaying reverse string
cout << "Using reverse iterators : ";
for (iter1=s.rbegin(); iter1!=s.rend(); iter1++)
cout << *iter1;
cout << endl;
return 0;
}
Output:
Here, you used the for loop in the code and both forward and reverse iterators to traverse through the string. The first for loop used a forward iterator and kept traversing and printing characters until it reached the end of the string. In the second for loop, you used the reverse iterator that started from the end and kept traversing and printing the characters until they reached the string’s start.
C++ String Capacity Functions
The C++ string capacity functions help to work with the size and capacity of the string. The primary functions of the capacity type are:
Function |
Description |
capacity() |
Returns the capacity allocated to a string by the compiler |
resize() |
Allows increasing or decreasing the size of the string |
length() |
Returns the size of the string |
shrink_to_fit() |
Decreases and makes the capacity equal to the minimum to save memory |
Example: Using String Class’s Capacity Functions
#include<iostream>
#include<string>
using namespace std;
int main(){
string s = "C++ Programming is Awesome!";
cout << "Initial string : ";
cout << s << endl;
// Resizing string using resize()
s.resize(15);
cout << "String after resizing : ";
cout << s << endl;
// Using the capacity function
cout << "String's capacity is : ";
cout << s.capacity() << endl;
// Using the length function
cout<<"String's length is : "<<s.length()<<endl;
// Using the shrink_to_fit function
s.shrink_to_fit();
cout << "Capacity post shrinking is : ";
cout << s.capacity() << endl;
return 0;
}
Output:
C++ String Manipulating Functions
The manipulating functions allow you to manipulate a string with operations such as copying and swapping.
Function |
Description |
copy(“char array”, len, pos) |
It copies a substring from the char array and copies it. The len and pos parameters define the length of the substring to be copied and starting position from where the copies begin, respectively. |
swap() |
Swaps one string with another |
Example: Using String Class’s Manipulating Functions
#include<iostream>
#include<string>
using namespace std;
int main(){
string s1 = "Welcome, learn C++ with Simplilearn here";
string s2 = "C++ is Awesome!";
// Declaring character array
char ch_arr[80];
// Using copy() to copy elements from s1 and
// placing it in ch_arr
s1.copy(ch_arr,26,9);
// Printing the array
cout << "Character array : ";
cout << ch_arr << endl << endl;
// Strings before swapping
cout << "String1 before swapping is : ";
cout << s1 << endl;
cout << "String2 before swapping is : ";
cout << s2 << endl;
// using swap() function
s1.swap(s2);
// Strings after swapping
cout << "String1 after swapping is : ";
cout << s1 << endl;
cout << "String2 after swapping is : ";
cout << s2 << endl;
return 0;
}
Output:
Are you a web developer or interested in building a website? Enroll for the Post Graduate Program In Full Stack Web Development. Explore the course preview!
Conclusion
In this article, you learned everything about the C++ String class, character array, and the difference between the two. You have also gone through some of the primary in-built String class functions that allow you to perform various operations on strings, along with examples. You can now use multiple functions to work with texts and strings in C++. Learning to work with C++ strings is essential, as you might have to take various inputs and give outputs through your app.
If you want to learn more about such fundamental C++ concepts, refer to Simplilearn’s C++ Tutorial for Beginners. The tutorial covers basic but most essential concepts like a classes, array and for loop in C++. Thus, it is adept at helping you set the foundation to excel in C++ development.
Are you looking to be an expert programmer? If yes, Simplilearn’s Post Graduate Program in Full Stack Web Development in collaboration with Caltech CTME should be your next stop.
Have any questions for us? Leave them in the comments section of this article. Our experts will get back to you on the same, ASAP!