C++ Strings

Introduction

Strings in C++ are used to represent sequences of characters. They are essential for handling text data and are widely used in applications that require text processing, such as file handling, user input, and output formatting.

C++ provides several ways to handle strings, including character arrays and the string class from the C++ Standard Library.

Using Character Arrays

Declaring and Initializing Character Arrays

A character array can be used to store a sequence of characters, terminated by a null character (\0).

Example: Declaring and Initializing a Character Array

#include <iostream>
using namespace std;

int main() {
    char greeting[6] = {'H', 'e', 'l', 'l', 'o', '\0'}; // Declares and initializes a character array

    cout << "Greeting message: " << greeting << endl;
    return 0;
}

Output

Greeting message: Hello

Explanation

  • char greeting[6] = {'H', 'e', 'l', 'l', 'o', '\0'}; declares and initializes a character array.
  • The array is null-terminated, making it a valid C-style string.

Example: Using String Literals

String literals can be used to initialize character arrays more conveniently.

#include <iostream>
using namespace std;

int main() {
    char greeting[] = "Hello"; // Declares and initializes a character array with a string literal

    cout << "Greeting message: " << greeting << endl;
    return 0;
}

Output

Greeting message: Hello

Explanation

  • char greeting[] = "Hello"; initializes the character array using a string literal. The null character is automatically appended.

Using the string Class

The string class in C++ provides a more flexible and convenient way to handle strings. It includes various member functions to perform operations on strings.

Example: Declaring and Initializing Strings

#include <iostream>
#include <string> // Include the string library
using namespace std;

int main() {
    string greeting = "Hello, World!"; // Declares and initializes a string

    cout << "Greeting message: " << greeting << endl;
    return 0;
}

Output

Greeting message: Hello, World!

Explanation

  • string greeting = "Hello, World!"; declares and initializes a string using the string class.

String Operations

Concatenation

Strings can be concatenated using the + operator or the append method.

Example: Concatenating Strings

#include <iostream>
#include <string>
using namespace std;

int main() {
    string firstName = "John";
    string lastName = "Doe";
    string fullName = firstName + " " + lastName; // Concatenates strings using the + operator

    cout << "Full Name: " << fullName << endl;
    return 0;
}

Output

Full Name: John Doe

Explanation

  • string fullName = firstName + " " + lastName; concatenates the firstName and lastName strings with a space in between.

Example: Using the append Method

#include <iostream>
#include <string>
using namespace std;

int main() {
    string firstName = "John";
    string lastName = "Doe";
    firstName.append(" ").append(lastName); // Concatenates strings using the append method

    cout << "Full Name: " << firstName << endl;
    return 0;
}

Output

Full Name: John Doe

Explanation

  • firstName.append(" ").append(lastName); appends the lastName string to firstName with a space in between.

Accessing Characters

You can access individual characters in a string using the [] operator or the at method.

Example: Accessing Characters

#include <iostream>
#include <string>
using namespace std;

int main() {
    string greeting = "Hello, World!";

    cout << "First character: " << greeting[0] << endl; // Accesses the first character
    cout << "Last character: " << greeting.at(greeting.length() - 1) << endl; // Accesses the last character

    return 0;
}

Output

First character: H
Last character: !

Explanation

  • greeting[0] accesses the first character of the string.
  • greeting.at(greeting.length() - 1) accesses the last character of the string using the at method.

String Length

You can get the length of a string using the length or size methods.

Example: Getting String Length

#include <iostream>
#include <string>
using namespace std;

int main() {
    string greeting = "Hello, World!";
    cout << "Length of the greeting message: " << greeting.length() << endl; // Gets the length of the string

    return 0;
}

Output

Length of the greeting message: 13

Explanation

  • greeting.length() returns the length of the string.

Substrings

You can extract substrings using the substr method.

Example: Extracting Substrings

#include <iostream>
#include <string>
using namespace std;

int main() {
    string greeting = "Hello, World!";
    string sub = greeting.substr(0, 5); // Extracts a substring from index 0 of length 5

    cout << "Substring: " << sub << endl;
    return 0;
}

Output

Substring: Hello

Explanation

  • greeting.substr(0, 5) extracts a substring starting from index 0 with a length of 5 characters.

Finding Substrings

You can find substrings within a string using the find method.

Example: Finding Substrings

#include <iostream>
#include <string>
using namespace std;

int main() {
    string greeting = "Hello, World!";
    size_t pos = greeting.find("World"); // Finds the substring "World"

    if (pos != string::npos) {
        cout << "\"World\" found at position: " << pos << endl;
    } else {
        cout << "\"World\" not found" << endl;
    }

    return 0;
}

Output

"World" found at position: 7

Explanation

  • greeting.find("World") finds the starting position of the substring "World" in the string.

Example Programs

Example 1: Reversing a String

This example demonstrates reversing a string.

#include <iostream>
#include <string>
using namespace std;

int main() {
    string str = "Hello, World!";
    string reversedStr = "";

    for (int i = str.length() - 1; i >= 0; i--) {
        reversedStr += str[i]; // Append each character in reverse order
    }

    cout << "Original string: " << str << endl;
    cout << "Reversed string: " << reversedStr << endl;

    return 0;
}

Output

Original string: Hello, World!
Reversed string: !dlroW ,olleH

Explanation

  • The program iterates through the string in reverse order and appends each character to reversedStr.

Example 2: Counting Vowels in a String

This example demonstrates counting the number of vowels in a string.

#include <iostream>
#include <string>
using namespace std;

int main() {
    string str = "Hello, World!";
    int vowelCount = 0;

    for (char c : str) {
        // Convert to lowercase for uniform comparison
        char lowerC = tolower(c);
        if (lowerC == 'a' || lowerC == 'e' || lowerC == 'i' || lowerC == 'o' || lowerC == 'u') {
            vowelCount++;
        }
    }

    cout << "Number of vowels in \"" << str << "\": " << vowelCount << endl;

    return 0;
}

Output

Number of vowels in "Hello, World!": 3

Explanation

  • The program iterates through the string and increments vowelCount for each vowel.

Conclusion

Strings are a fundamental aspect of handling text data in C++. This chapter covered how to declare, initialize, and manipulate strings using character arrays and the string class. It also demonstrated various string operations, such as concatenation, accessing characters, getting string length, extracting substrings, and finding substrings. Understanding how to work with strings effectively will help you manage and process text data efficiently in your programs. In the next chapter, we will explore user input handling in C++.

Leave a Comment

Your email address will not be published. Required fields are marked *

Scroll to Top