Introduction to CPP Strings

Unraveling String Representations in C++: A Comprehensive Exploration

The string data type in C++ allows for the manipulation and storage of sequences of characters, providing a versatile way to handle textual information. Delving into the realm of C++

programming, we encounter not one, but two distinct forms of string representation, each carrying its own unique traits:

The C-Style Character String: An Evolution of Tradition

Originating from the roots of the C language, the C-style character string remains steadfastly embraced within the C++ landscape. This string assumes the form of a one-dimensional array, where characters line up one after the other, culminating in a null character ‘\0’. This null-terminated string finds its culmination in a sequence of characters followed by the null.

Imagine the creation of a string bearing the embodiment of “Hello”. To accommodate the null character at the string’s end, the array dimension surpasses the character count by one.

char greeting[6] = {'H', 'e', 'l', 'l', 'o', '\0'};

For those who heed the art of array initiation, this can be succinctly captured:

char greeting[] = "Hello";

The memory realm unfurls as the following portrayal:

Insert Image/Visual: String Presentation in C/C++

Eradicate any notion of placing the null character manually. The C++ compiler, a guardian of syntax, meticulously affixes the ‘\0’ as it initializes the array. A glimpse of this magic unfolds when we endeavor to print the aforementioned string:

#include <iostream>

using namespace std;

int main () {

   char greeting[6] = {'H', 'e', 'l', 'l', 'o', '\0'};

   cout << "Greeting message: ";
   cout << greeting << endl;

   return 0;
}

As this code marches through the cycle of compilation and execution, the curtain rises to reveal the following spectacle:

Greeting message: Hello

C++ Array Functions: Navigating the Array Universe

C++ extends a warm embrace to an array of functions, each primed to sculpt and manipulate null-terminated strings. Some of the most noteworthy voyages through this landscape include:

  1. strcpy(s1, s2): This alchemist bestows the gift of copying string s2 into s1.
  2. strcat(s1, s2): The power of concatenation binds s2 to the tail of s1.
  3. strlen(s1): This oracle reveals the length of string s1.
  4. strcmp(s1, s2): A verdict emerges—0 for s1 and s2 equality, negative for s1s2.
  5. strchr(s1, ch): The treasure map reveals the first occurrence of character ch within string s1.
  6. strstr(s1, s2): Unveiling a parchment pointing to the maiden appearance of s2 within s1.

Step into this arena with the following exemplar:

#include <iostream>
#include <cstring>

using namespace std;

int main () {

   char str1[10] = "Hello";
   char str2[10] = "World";
   char str3[10];
   int  len ;

   // copy str1 into str3
   strcpy( str3, str1);
   cout << "strcpy( str3, str1) : " << str3 << endl;

   // concatenate str1 and str2
   strcat( str1, str2);
   cout << "strcat( str1, str2): " << str1 << endl;

   // length of str1 post concatenation
   len = strlen(str1);
   cout << "strlen(str1) : " << len << endl;

   return 0;
}

As this code takes its stance on the platform of compilation and execution, the following tableau of results unfurls:

strcpy( str3, str1) : Hello
strcat( str1, str2): HelloWorld
strlen(str1) : 10

The String Class: A Paradigm of Possibilities

C++ unveils a masterpiece—a string class type that reigns supreme in functionality. Behold its power in action:

#include <iostream>
#include <string>

using namespace std;

int main () {

   string str1 = "Hello";
   string str2 = "World";
   string str3;
   int  len ;

   // copy str1 into str3
   str3 = str1;
   cout << "str3 : " << str3 << endl;

   // concatenate str1 and str2
   str3 = str1 + str2;
   cout << "str1 + str2 : " << str3 << endl;

   // length of str3 post concatenation
   len = str3.size();
   cout << "str3.size() :  " << len << endl;

   return 0;
}

The symphony of compilation and execution unfolds to unveil the marvel:

str3 : Hello
str1 + str2 : HelloWorld
str3.size() :  10

In the grand tapestry of C++, strings serve as the threads weaving a story of code and creation. From C-style characters to the opulence of the string class, the journey is an exploration of syntax and semantics that continues to captivate the hearts of programmers.


Discover more from PiEmbSysTech - Embedded Systems & VLSI Lab

Subscribe to get the latest posts sent to your email.

Leave a Reply

Scroll to Top

Discover more from PiEmbSysTech - Embedded Systems & VLSI Lab

Subscribe now to keep reading and get access to the full archive.

Continue reading