**C++ Strings**
:::danger
## Abstract
C++ strings is one of the most useful data types supplied in the C++ libraries. A string is a variable that stores a sequence of letters or other characters, such as "Scaler" or "He is a good boy!". In C++,string is an object of **std::string** class .
Just like the other data types, to create a string we first declare it, then we can store a value in it.
:::
:::info
## Scope of article
-This article defines C++ Strings and explains the intuitive logic of this data type.
-This article is going to show you how you can use C++ Strings in programming .
:::
:::success
## Definition
A string is a variable that stores a sequence of letters or other characters.
String class stores the characters as a sequence of bytes with the functionality of allowing access to the single-byte character.
:::
:::warning
## In order to use String data type
The C++ String header **<string>** must be included at the top of the program. Also ,you'll need to include **using namespace std;** to make the short name **string** visible instead of requiring the cumbersome **std::string**. (As a side note,**std** is a C++ namespace for many pieces of functionality that are provided in standard C++ libraries. For the purpose of this class, you won't need to otherwise know about namespaces.) Thus, you would have the following **#include's** in your program in order to use the **string** type.
**#include<string>**
**using namespace std;**
:::
## Basic Operations on Strings
:::info
1.**Input Functions**
a. **getline()**-- This function is used to store a stream of characters as entered by the user in the object memory.
b. **push_back()**-- This function is used to input a character at the end of the string.
c. **pop_back()**-- Introduced from C++,this function is used to delete the last character from the string.
:::
## Example Program
:::spoiler
#include<iostream>
#include<string>
using namespace std;
int main()
{
string str;
getline(cin,str); //taking the string
cout<<"the starting string is";
cout<<str<<endl;
str.push_bcak('a'); //inserting the string
cout<<"the string after the push_back::";
cout<<str<<endl;
str.pop_back();
cout<<"the string after the pop_back operation::";
cout<<str<<endl;
return 0;
}
:::
:::info
2. **Counting the number of characters in a string**
a. **str.length()**--The **length** method returns the number of characters in a string, including spaces and punctuation.
**length** is a member function,as we know we invoke member function using *dot notation*.(e.g. **str.length(**))
:::
## Example Program
:::spoiler
#include <string>
#include <iostream>
using namespace std;
int main() {
string small, large;
small = "I am short";
large = "I, friend, am a long and elaborate string indeed";
cout << "The short string is " << small.length()
<< " characters." << endl;
cout << The long string is " << large.length()
<< " characters." << endl;
return 0;
}
**Output:**
The short string is 10 characters.
The long string is 48 characters.
:::
:::info
3.**Accessing individual characters.**
a.**using []**-Using square brackets, you can access individual characters within a string as if it's a **char** array.
:::
## Example Program
:::spoiler
#include <string>
#include <iostream>
using namespace std;
int main() {
string test;
test = "I am Q the omnipot3nt";
char ch = test[5]; // ch is 'Q'
test[18] = 'e'; // we correct misspelling of omnipotent
cout << test << endl;
cout << "ch = " << ch << endl;
return 0;
}
**Output**
I am Q the omnipotent
ch = Q
:::
:::info
4. **Capacity Functions**
a.**capacity()**-- This function returns the capacity allocated to the string, which can be equal to or more than the size of the string.
b.**resize()**-- This function changes the size of the string ,the size can be increased or decreased.
:::
## Example Program
:::spoiler
#include <iostream>
#include <string> // for string class
using namespace std;
int main()
{
string str="hey i am studying in scaler academy";
cout<<"the intial string is::";
cout<<str<<endl;
str.resize(12);
cout<<"the string after resize operation is::";
cout<<str<<endl;
cout<<"the capacity of string is::";
cout<<str.capacity()<<endl;
return 0;
}
**Output:**
the intial string is::hey i am studying in scaler academy
the string after resize operation is::hey i am stu
the capacity of string is::35
:::
:::info
5.**Iterator Functions::**
a. **begin()**-- This functions returns an iterator to the beginning of the string .
b. **end()**-- This function returns an iterator to the end of the string.
c. **rbegin()**-- This function returns a reverse iterator pointing at the end of the string.
d. **rend()**-- This function returns a reverse iterator pointing at beginning of the string.
:::
## Example Program
:::spoiler
#include <iostream>
#include <string> // for string class
using namespace std;
int main()
{
string str="i am studying in scaler academy";
string::iterator it;
string::reverse_iterator it1;
cout<<"the string for forward iterators is:";
for(it=str.begin();it!=str.end();it++)
{
cout<<*it;
}
cout<<endl;
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 for forward iterators is:i am studying in scaler academy
the reverse string using reverse iterators is:ymedaca relacs ni gniyduts ma i
:::