String manipulation is a fundamental skill in C++ programming. This topic will cover various operations you can perform on strings, such as concatenation, comparison, searching, and modifying strings. By the end of this section, you will be able to handle strings efficiently and perform common string operations.

Key Concepts

  1. String Concatenation
  2. String Comparison
  3. String Searching
  4. String Modification
  5. String Conversion

  1. String Concatenation

String concatenation is the process of joining two or more strings together.

Example

#include <iostream>
#include <string>

int main() {
    std::string str1 = "Hello, ";
    std::string str2 = "World!";
    std::string result = str1 + str2; // Concatenation using + operator
    std::cout << result << std::endl; // Output: Hello, World!
    return 0;
}

Explanation

  • str1 and str2 are two strings.
  • The + operator is used to concatenate str1 and str2.
  • The result is stored in the result string and printed.

  1. String Comparison

String comparison is used to compare two strings to determine their relative order or equality.

Example

#include <iostream>
#include <string>

int main() {
    std::string str1 = "apple";
    std::string str2 = "banana";

    if (str1 == str2) {
        std::cout << "Strings are equal" << std::endl;
    } else if (str1 < str2) {
        std::cout << "str1 is less than str2" << std::endl;
    } else {
        std::cout << "str1 is greater than str2" << std::endl;
    }
    return 0;
}

Explanation

  • The == operator checks if str1 and str2 are equal.
  • The < and > operators compare the strings lexicographically.

  1. String Searching

String searching involves finding a substring within a string.

Example

#include <iostream>
#include <string>

int main() {
    std::string str = "Hello, World!";
    std::string substr = "World";
    size_t found = str.find(substr);

    if (found != std::string::npos) {
        std::cout << "Substring found at index " << found << std::endl;
    } else {
        std::cout << "Substring not found" << std::endl;
    }
    return 0;
}

Explanation

  • str.find(substr) searches for substr within str.
  • If the substring is found, find returns the starting index; otherwise, it returns std::string::npos.

  1. String Modification

String modification includes operations like inserting, erasing, and replacing parts of a string.

Example

#include <iostream>
#include <string>

int main() {
    std::string str = "Hello, World!";
    
    // Inserting a substring
    str.insert(7, "Beautiful ");
    std::cout << "After insertion: " << str << std::endl; // Output: Hello, Beautiful World!
    
    // Erasing a substring
    str.erase(7, 10);
    std::cout << "After erasing: " << str << std::endl; // Output: Hello, World!
    
    // Replacing a substring
    str.replace(7, 5, "Universe");
    std::cout << "After replacing: " << str << std::endl; // Output: Hello, Universe!
    
    return 0;
}

Explanation

  • str.insert(7, "Beautiful ") inserts "Beautiful " at index 7.
  • str.erase(7, 10) erases 10 characters starting from index 7.
  • str.replace(7, 5, "Universe") replaces 5 characters starting from index 7 with "Universe".

  1. String Conversion

String conversion involves converting other data types to strings and vice versa.

Example

#include <iostream>
#include <string>

int main() {
    int num = 42;
    double pi = 3.14159;
    
    // Converting numbers to strings
    std::string str_num = std::to_string(num);
    std::string str_pi = std::to_string(pi);
    
    std::cout << "String representation of num: " << str_num << std::endl; // Output: 42
    std::cout << "String representation of pi: " << str_pi << std::endl; // Output: 3.141590
    
    // Converting strings to numbers
    std::string str = "123";
    int int_val = std::stoi(str);
    std::cout << "Integer value: " << int_val << std::endl; // Output: 123
    
    return 0;
}

Explanation

  • std::to_string(num) converts an integer to a string.
  • std::to_string(pi) converts a double to a string.
  • std::stoi(str) converts a string to an integer.

Practical Exercises

Exercise 1: Concatenate Strings

Task: Write a program that concatenates three strings entered by the user and prints the result.

Solution:

#include <iostream>
#include <string>

int main() {
    std::string str1, str2, str3;
    std::cout << "Enter first string: ";
    std::getline(std::cin, str1);
    std::cout << "Enter second string: ";
    std::getline(std::cin, str2);
    std::cout << "Enter third string: ";
    std::getline(std::cin, str3);

    std::string result = str1 + " " + str2 + " " + str3;
    std::cout << "Concatenated string: " << result << std::endl;

    return 0;
}

Exercise 2: Find and Replace Substring

Task: Write a program that finds a substring in a given string and replaces it with another substring.

Solution:

#include <iostream>
#include <string>

int main() {
    std::string str, to_find, to_replace;
    std::cout << "Enter the main string: ";
    std::getline(std::cin, str);
    std::cout << "Enter the substring to find: ";
    std::getline(std::cin, to_find);
    std::cout << "Enter the substring to replace with: ";
    std::getline(std::cin, to_replace);

    size_t pos = str.find(to_find);
    if (pos != std::string::npos) {
        str.replace(pos, to_find.length(), to_replace);
        std::cout << "Modified string: " << str << std::endl;
    } else {
        std::cout << "Substring not found" << std::endl;
    }

    return 0;
}

Common Mistakes and Tips

  • Mistake: Forgetting to check if the substring is found before replacing.
    • Tip: Always check if find returns std::string::npos before performing replace operations.
  • Mistake: Using incorrect indices for insert, erase, or replace operations.
    • Tip: Carefully calculate the indices and lengths to avoid runtime errors.

Conclusion

In this section, you learned about various string manipulation techniques in C++, including concatenation, comparison, searching, modification, and conversion. These skills are essential for handling text data in your programs. Practice the exercises to reinforce your understanding and prepare for more advanced topics.

© Copyright 2024. All rights reserved