C++ 文字列関数: strcpy(), strcat(), strlen(), strcmp() の例

文字列とは

文字列は文字の並びです。 C++ 文字列は std::string クラスのオブジェクトです。文字はバイトのシーケンスとして格納され、単一の文字バイトへのアクセスが許可されます。

C++ 文字列は動的にメモリを割り当てます。必要に応じて、実行時に文字列にさらにメモリを割り当てることができます。メモリの事前割り当てがないため、メモリが無駄になりません。比較、連結、変換など、文字列に対してさまざまな操作を実行できます。

文字列の宣言

C++ 2 種類の文字列宣言をサポートします。

  • Cスタイルの文字列
  • 文字列クラス型

C スタイルの文字列

このタイプの文字列宣言は、 Cプログラミング言語. C++ 引き続きサポートされます。これは、ヌル文字 (\0) で終了する文字の XNUMX 次元配列です。ヌルで終了する文字列には、文字列を構成する文字と、その後に続くヌルが含まれます。

以下の文字列宣言を考えてみましょう。

char name[5] = {'J', 'o', 'h', 'n', '\0'};

上記の宣言により、John という単語を形成する文字列が作成されます。 単語には 4 文字がありますが、文字列のサイズは 5 です。余分なスペースにより、ヌル文字を保持できます。

配列初期化ルールを使用すると、上記のステートメントを次のように記述できます。

char name[] = "John";

文字列定数の最後にヌル文字を置く必要はありません。 C++ コンパイラは、配列を初期化するときに、文字列の末尾に自動的に '\0' を配置します。

std ::文字列

標準 C++ ライブラリは、さまざまな文字列操作をサポートする文字列クラスを提供します。これは std::string として記述されます。

このクラスを使用するには、まず、以下に示すように #include プリプロセッサを使用してこのクラスをワークスペースに含める必要があります。

#include<string>

次に、string キーワードを使用して文字列を宣言できます。 例えば:

string name = "John";

上記のステートメントは、値 John を保持する name という名前の文字列を作成します。

文字列値へのアクセス

In C++、文字列名を使用して文字列値にアクセスできます。 例えば:

#include <iostream>
using namespace std;
int main() {
	char name[5] = { 'J', 'o', 'h', 'n', '\0' };
	cout << "String value is: ";
	cout << name << endl;
	return 0;
}

出力:

文字列値へのアクセス

コードのスクリーンショットは次のとおりです。

文字列値へのアクセス

コードの説明:

  1. コードに iostream ヘッダー ファイルを含めます。 これにより、コンソールからの読み取りとコンソールへの書き込みが可能になります。
  2. std 名前空間を含めて、そのクラスと関数を呼び出さずに使用できるようにします。
  3. プログラムのロジックを追加する main() 関数を呼び出します。 { は、main() 関数の本体の開始を示します。
  4. 文字列を宣言し、名前を付けます。 文字列には値 John が格納されます。 余分なスペースにはヌル文字が格納されます。
  5. コンソールにテキストを出力します。
  6. name という名前の文字列の値をコンソールに出力します。
  7. プログラムが正常に実行される場合、main() 関数は値を返す必要があります。
  8. main() 関数の本体の終わり。

もう一つの例は C++ 標準文字列クラス:

#include <iostream>
#include <string>
using namespace std;
int main() {

	string name = "Guru99";
	
	cout << "The name is : " << name << endl;

	return 0;
}

出力:

文字列値へのアクセス

コードのスクリーンショットは次のとおりです。

文字列値へのアクセス

コードの説明:

  1. コードに iostream ヘッダー ファイルを含めます。 これにより、コンソールからの読み取りとコンソールへの書き込みが可能になります。
  2. コードに標準の文字列クラスを含めます。
  3. std 名前空間を含めて、そのクラスと関数を呼び出さずに使用できるようにします。
  4. プログラムのロジックを追加する main() 関数を呼び出します。 { は、main() 関数の本体の開始を示します。
  5. 文字列を宣言し、それに名前を付けます。 文字列には値 Guru99 が格納されます。
  6. 文字列名の値をテキストとともにコンソールに出力します。
  7. プログラムが正常に実行される場合、main() 関数は値を返す必要があります。
  8. main() 関数の本体の終わり。

文字列関数 C++

多くの場合、文字列を操作したくなるでしょう。 C++ は、このために使用できるさまざまな関数を提供します。これらの関数は CString クラスで定義されているため、関数を使用するにはコードに組み込む必要があります。いくつか見てみましょう。

strcpy()

これが文字列コピー関数です。 ある文字列を別の文字列にコピーします。

構文:

strcpy(string1, string2);

関数の 1 つのパラメータ string2 と string2 は文字列です。関数は文字列 string1 を stringXNUMX にコピーします。

strcat()

これが文字列連結関数です。 文字列を連結します。

構文:

strcat(string1, string2);

関数の 1 つのパラメーター string2 と string2 は、連結される文字列です。 上記の関数は、文字列 string1 を文字列 stringXNUMX の末尾に連結します。

strlen()

これは文字列長関数です。 引数として渡された文字列の長さを返します。

構文:

strnlen(string1)

パラメータ string1 は、長さを決定する文字列の名前です。 上記の関数は、文字列 string1 の長さを返します。

strcmp()

これは文字列比較関数です。 文字列の比較に使用されます。

構文:

strcmp(string1, string2);

上記の関数は、文字列 string0 と string1 が類似している場合は 2 を返し、string0 の場合は 1 より小さい値を返します。 文字列2。

例:

次の例は、上記の文字列関数の使用方法を示しています。

#include <iostream>
#include <cstring>
using namespace std;
int main() {

	char name1[10] = "Guru99";
	char name2[10] = "John";
	char name3[10];

	int  len;
	strcpy(name3, name1);
	cout << "strcpy( name3, name1) : " << name3 << endl;

	strcat(name1, name2);
	cout << "strcat( name1, name2): " << name1 << endl;

	len = strlen(name1);
	cout << "strlen(name1) : " << len << endl;
	return 0;
}

出力:

文字列関数 C++

コードのスクリーンショットは次のとおりです。

文字列関数 C++

コードの説明:

  1. コードに iostream ヘッダー ファイルを含めます。 これにより、コンソールからの読み取りとコンソールへの書き込みが可能になります。
  2. コードに標準の CString クラスを含めます。
  3. std 名前空間を含めて、そのクラスと関数を呼び出さずに使用できるようにします。
  4. プログラムのロジックを追加する main() 関数を呼び出します。 { は、main() 関数の本体の開始を示します。
  5. 10 文字の文字列を宣言し、name1 という名前を付けます。 文字列には値 Guru99 が格納されます。
  6. 10 文字の文字列を宣言し、name2 という名前を付けます。 文字列には値 John が格納されます。
  7. 10 文字の文字列を宣言し、それに name3 という名前を付けます。
  8. を宣言する 整数変数 レンという名前。
  9. 文字列 name1 を文字列 name3 にコピーします。
  10. 文字列 name1 の値をテキストとともにコンソールに出力します。 Guru99 が出力されるはずです。
  11. 文字列 name2 を文字列 name1 の末尾に連結します。 name1 の値は Guru99John になりました。
  12. 文字列 name1 の値をテキストとともにコンソールに出力します。 Guru99John と出力されるはずです
  13. name1 という名前の文字列の長さを決定し、その長さの値を変数 len に割り当てます。
  14. len 変数の値を他のテキストと一緒にコンソールに出力します。
  15. プログラムが正常に実行される場合、main() 関数は値を返す必要があります。
  16. main() 関数の本体の終わり。

まとめ

  • 文字列は一連の文字です。
  • 文字列は、標準の文字列クラスに属します。 C++.
  • C スタイルの文字列または標準の文字列クラスを使用して文字列を宣言できます。
  • strcpy() 関数は、ある文字列を別の文字列にコピーします。
  • strcat() 関数は 2 つの文字列を連結します。
  • strlen() 関数は文字列の長さを返します。
  • strcmp() 関数は 2 つの文字列を比較します。