In C++, we often need to manipulate strings, including copying one string into another. This tutorial aims to teach you the various methods of copying strings in C++.



Understanding Strings in C++

Before we get into how to copy strings, it's essential first to grasp the concept of what strings are. In C++, a string is essentially a collection of characters organized as an array in memory. This sequence of characters concludes with a unique character, the null character ('\0'). To illustrate, the string "Hello" is stored in memory as an array {'H', 'e', 'l', 'l', 'o', '\0'}.

C++ Program to Copy Strings

There are various techniques for copying a string from one variable to another in C++. Let's look at some of the most widely used methods.

Using C-style Character Arrays

The simplest way to copy a string in C++ is to manually copy each character from the source string to the destination string. This method can be ineffective but is a good way to understand the concept.

Here's an example of how to do this:

#include<iostream>
#include<cstring> // for strlen()

using namespace std;

int main() {
    char source[] = "Hello, world!";
    int len = strlen(source); // getting length of source string

    // destination string length should be one more than source
    // to hold the null character at the end
    char destination[len + 1]; 

    // copying character by character
    for(int i=0; i<len; i++) {
        destination[i] = source[i];
    }

    // append null character at the end
    destination[len] = '\0'; 

    cout << "Copied string is: " << destination << endl;

    return 0;
}

The above program first determines the length of the "source" string using the strlen() function from the <cstring> library. Next, it creates a new character array called "destination", one character longer than the "source" to accommodate the null character. Lastly, the program utilizes a loop to transfer each character from the "source" to the "destination".

Using the strcpy Function

A more efficient and quicker way to copy strings in C++ is to utilize the strcpy() function, which is part of the <cstring> library. The strcpy() function accepts two arguments: a "destination" string and a "source" string, and it copies the "source" string into the "destination" string.

Here's an example of how to use the strcpy() function to copy a string:

#include<iostream>
#include<cstring> // for strcpy()

using namespace std;

int main() {
    char source[] = "Hello, world!";

    // destination string should be large enough to hold the source string
    char destination[50]; 

    strcpy(destination, source);

    cout << "Copied string is: " << destination << endl;

    return 0;
}

In the above program, we created a large character array called "destination" to ensure it can hold both the "source" string and the null character. Next, we utilized the function "strcpy()" to copy the source into the destination.

Using the Assignment Operator

If you are using the string class in C++, you can use the assignment operator (=) to copy one string to another. This method is simple and easy to use but unavailable if you're working with C-style character arrays.

Here's an example of how to use the assignment operator to copy a string:

#include<iostream>
#include<string> // for string class

using namespace std;

int main() {
    string source = "Hello, world!";
    string destination;

    destination = source;

    cout << "Copied string is: " << destination << endl;

    return 0;
}

In the program above, we initialized a string object named "source" and gave it the value "Hello, world!". Then, we created another string object named "destination" and used the assignment operator to duplicate the content of "source" into "destination".

In this guide, we've explored different ways to copy strings in C++. Although copying each character manually may seem tedious, it provides a fundamental understanding of how strings work in C++. We can use the strcpy() function or assignment operator for a more efficient approach that delivers simplicity and speed.



Found This Page Useful? Share It!
Get the Latest Tutorials and Updates
Join us on Telegram