1 つの文字列を別の文字列にコピーする

C++Beginner
オンラインで実践に進む

はじめに

この実験では、C++ で文字列をコピーする方法を学びます。これを示すために、文字列オブジェクトと C スタイルの文字列を両方とも使用します。

新しい C++ ファイルを作成する

~/project ディレクトリに移動し、main.cpp という名前の新しい C++ ファイルを作成します。

cd ~/project
touch main.cpp

文字列オブジェクトのコピー

文字列オブジェクトを別のものにコピーするには、代入演算子を使用できます。以下のコードを参考にしてください。

#include <iostream>
#include <string>

using namespace std;

int main() {
    string s1, s2;

    cout << "Enter string s1: ";
    getline(cin, s1);

    s2 = s1;

    cout << "s1 = " << s1 << endl;
    cout << "s2 = " << s2;

    return 0;
}

解説:

  • このプログラムに必要なライブラリである iostreamstring をインクルードして始めます。
  • 次に、2 つの文字列オブジェクト s1s2 を定義します。
  • getline() 関数を使用して、ユーザーに文字列 s1 の入力を促します。この関数は、空白を含む文字列を全体として読み取ります。
  • 代入演算子を使用して s1 を s2 に代入します。
  • 最後に、s1 と s2 を出力します。

コード出力

Enter string s1: Hello World!
s1 = Hello World!
s2 = Hello World!

C スタイルの文字列のコピー

C スタイルの文字列をコピーするには、cstring ライブラリの strcpy() 関数を使用します。以下のコードを参考にしてください。

#include <iostream>
#include <cstring>

using namespace std;

int main() {
    char s1[100], s2[100];

    cout << "Enter string s1: ";
    cin.getline(s1, 100);

    strcpy(s2, s1);

    cout << "s1 = " << s1 << endl;
    cout << "s2 = "<< s2;

    return 0;
}

解説:

  • このプログラムに必要なライブラリである iostreamcstring をインクルードして始めます。
  • 次に、2 つの C スタイルの文字列配列 s1s2 を定義します。
  • ユーザーに文字列 s1 の入力を促します。
  • この場合、getline() 関数は使用しません。なぜなら、この関数は文字列オブジェクトにのみ使用され、C スタイルの文字列には使用できないからです。代わりに、cin.getline を使用します。この関数の第 1 引数は配列変数で、第 2 引数は読み取る配列の最大サイズです。
  • cstringstrcpy() 関数を使用して、文字列 s1 を s2 にコピーします。
  • 最後に、s1 と s2 を出力します。

コード出力

Enter string s1: Hello World!
s1 = Hello World!
s2 = Hello World!

ファイルを実行する

端末でコードを実行するには、プロジェクト フォルダで端末を開き、次のコマンドを実行します。

g++ main.cpp -o main
./main

このコマンドは、main.cpp ファイルをコンパイルし、同じディレクトリに名前が main の実行可能ファイルを出力します。2 番目のコマンドは、main ファイルを実行し、端末に結果を出力します。

まとめ

この実験では、C++ で文字列オブジェクトと C スタイルの文字列を使用して文字列をコピーする方法について説明しました。文字列オブジェクトの場合、代入演算子を使用でき、C スタイルの文字列の場合、cstringstrcpy() 関数を使用できることがわかりました。これらの簡単な手順に従えば、C++ で文字列を簡単にコピーできます。