はじめに
この実験では、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;
}
解説:
- このプログラムに必要なライブラリである
iostreamとstringをインクルードして始めます。 - 次に、2 つの文字列オブジェクト
s1とs2を定義します。 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;
}
解説:
- このプログラムに必要なライブラリである
iostreamとcstringをインクルードして始めます。 - 次に、2 つの C スタイルの文字列配列
s1とs2を定義します。 - ユーザーに文字列 s1 の入力を促します。
- この場合、
getline()関数は使用しません。なぜなら、この関数は文字列オブジェクトにのみ使用され、C スタイルの文字列には使用できないからです。代わりに、cin.getlineを使用します。この関数の第 1 引数は配列変数で、第 2 引数は読み取る配列の最大サイズです。 cstringのstrcpy()関数を使用して、文字列 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 スタイルの文字列の場合、cstring の strcpy() 関数を使用できることがわかりました。これらの簡単な手順に従えば、C++ で文字列を簡単にコピーできます。



