The C++ strings are nothing but used for representing a sequence of characters as an object. String class stores the characters as a sequence of bytes. A string is described by using <string.h> header file. And the character array is simply an array of characters that can be terminated by NULL character. And we can also say that stream defines objects which represent a stream of characters. While the size of the character array has to be allocated statically, and more memory cannot be allocated at the run time if required.
C++ Strings with Examples
In case of strings, memory is allocated dynamically, while the unused allocated memory is wasted in the character array. So more memory can be allocated at run time on demand. There is a threat of character decay in case of the character array. And the implementation of a character array is faster than std:: string. Strings are slower when compared to implementation then character array. While the string class has many constructors that are called to create a string object.
String Declaration in C++
We can represent the strings in two ways. They are as follows:
Syntax: char string_name[string_size];
Through an array of characters
Example:
char greeting[6];
Through pointers
Example:
char *greeting;
C++ supports two different types of string representation. They are as follows:
- C style character string
- String class types introduced with standard c++
C style character string
The string is actually a one-dimensional array of characters which is terminated by a null character ‘\0’. So the null-terminated string contains the characters that comprise the string followed by a null.
Example: char greeting[6] = {‘H’, ‘e’, ‘l’, ‘l’, ‘o’, ‘\0’};
And here we are also providing the memory representation of string
String Initialization in C++
Syntax: char string_name[string_size] = {comma_separated_character_list};
Example:
char str[6] = {'H', 'e', 'l', 'l', 'o', '\0'};
Actually, you don’t need to place the null character (‘\0’) at the end of the string constant. The C++ compiler automatically places at the end of the string.
Example:
#include<iostream.h> #include<conio.h> void main() { clrscr(); char greet[6] = {'H', 'e', 'l', 'l', 'o', '\0'}; cout<<greet<<endl; getch(); }
Output:
Hello
Example:
#include<iostream.h> #include<conio.h> void main() { clrscr(); char str[40]; cout<<"Enter your name: "; cin>>str; cout<<"Hello,"<<str; getch(); }
Output:
Enter your name: freshersnow
Hello, freshersnow
Functions that manipulate the NULL-terminated strings
Function | Description |
---|---|
strcpy(s1, s2); | Copies string s2 into string s1 |
strcat(s1, s2); | Concatenates string s2 onto the end of string s |
strlen(s1) | Returns the length of string s1 |
strcmp(s1, s2); | Returns 0 if s1 and s2 are the same; less than 0 if s1<s2; greater than 0 if s1>s2. |
strchr(s1, ch); | Returns a pointer to the first occurrence of character ch in string s1 |
strstr(s1, s2); | Returns a pointer to the first occurrence of string s2 in string s1 |
Example:
using namespace std; int main () { char str1[10] = "Freshers"; char str2[10] = "Now"; char str3[10]; int len ; //copy str1 into str3 strcpy( str3, str1); cout<<"strcpy( str3, str1) :" << str3 << endl; //concatenates str1 and str2 strcat( str1, str2); cout<<"strcat( str1, str2):"<<str1<<endl; //total length of str1 after concatenation len = strlen(str1); cout<<"strlen(str1) : "<<len<<endl; return 0; }
Output:
strcpy( str3, str1) : Freshers
strcat( str1, str2): FreshersNow
strlen(str1) : 11
String Class in C++
C++ library provides a string class type that supports all the operations, additionally much more functionality.
Example:
#include<iostream> #include<cstring> #include<iostream> #include<string> using namespace std; int main () { string str1 = "Freshers"; string str2 = "Now"; string str3; int len ; //copy str1 into str3 str3 = str1; cout<<"str3 :"<< str3 <<endl; //concatenates str1 and str2 str3 = str1 + str2; cout<<"str1 + str2:"<< str3 << endl; //total length of str3 after concatenation len = str3.size(); cout<<"str3.size(): " <<len << endl; return 0; }
Output:
str1 + str2 : FreshersNow
str3.size() : 11