工業製造
産業用モノのインターネット | 工業材料 | 機器のメンテナンスと修理 | 産業プログラミング |
home  MfgRobots >> 工業製造 >  >> Industrial programming >> C言語

C++文字列関数をマスター:strcpy、strcat、strlen、strcmpの実践例

文字列とは

文字列とは単純に文字のシーケンスです。現代のC++では通常、std::stringクラスのオブジェクトを扱います。これはメモリ割り当て、リサイズ、豊富なメンバ関数を自動的に処理するため、手動のバッファ管理が不要になり、バッファオーバーフローのリスクが軽減されます。

教育目的のため、C++は従来のCスタイルのヌル終端文字配列もサポートしています。両アプローチにはそれぞれ用途があります:日常的なプログラミングにはstd::stringを使用し、レガシーAPIやパフォーマンスクリティカルな低レベルコードにはCスタイル文字列を使用します。

文字列の宣言

Cスタイル文字列

例:

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

より簡潔には:

char name[] = "John"; // コンパイラが終端'\0'を自動挿入

std::string

std::stringを使用するにはヘッダをインクルードし変数を宣言:

#include <string>
std::string name = "John";

文字列値へのアクセス

以下はCスタイル文字列とstd::stringの値を出力する簡単なコンソールプログラムです。

#include <iostream>
#include <string>
using namespace std;
int main() {
    char cName[5] = "John"; // Cスタイル文字列
    string cppName = "Guru99"; // std::string
    cout << "C-style string: " << cName << endl;
    cout << "std::string: " << cppName << endl;
    return 0;
}

出力:

両スタイルの文字列出力例

主要なC文字列関数

これらの関数はcstringヘッダで定義されています。Cスタイル文字列(ヌル終端char配列)を操作します。

strcpy()

ソース文字列をデスティネーションバッファにコピーします。デスティネーションはソースを保持するのに十分な大きさでなければなりません。

strcpy(dest, src); // destは十分なスペースが必要

strcat()

ソース文字列をデスティネーション文字列の末尾に追加します。同様にデスティネーションバッファは結果を収容するのに十分な大きさでなければなりません。

strcat(dest, src); // destは十分なスペースが必要

strlen()

終端ヌルバイトを除く文字列の文字数を返します。

size_t len = strlen(str);

strcmp()

2つの文字列を辞書順で比較します。等しければ0、最初の文字列が小さければ負の値、大きければ正の値を返します。

int cmp = strcmp(str1, str2);

実践例

#include <iostream>
#include <cstring>
using namespace std;
int main() {
    char name1[10] = "Guru99";
    char name2[10] = "John";
    char name3[20]; // 連結結果を保持できるサイズを確保
    // コピー
    strcpy(name3, name1);
    cout << "strcpy(name3, name1): " << name3 << endl;
    // 連結
    strcat(name1, name2);
    cout << "strcat(name1, name2): " << name1 << endl;
    // 長さ
    size_t len = strlen(name1);
    cout << "strlen(name1): " << len << endl;
    // 比較
    int cmp = strcmp(name1, name3);
    cout << "strcmp(name1, name3): " << cmp << endl;
    return 0;
}

出力:

文字列関数の実行結果

ポイント

C言語

  1. C++変数とデータ型:int、double、char、string、boolを徹底解説
  2. C++配列を徹底解説:宣言、初期化、ポインタ活用テクニック
  3. C++ do-while文:構文、実践例、ネストしたループ
  4. C++ポインタをマスター:概念、例、実践的応用
  5. C++ char型をマスター:宣言、ASCII、変換テクニック
  6. C++演算子オーバーロード:コード例付き実践ガイド
  7. C++関数を実例で徹底解説:基本から応用まで
  8. C 言語の文字列をマスター: 宣言、入力、出力、ライブラリ関数
  9. Java文字列をマスター:生成、メソッド、ベストプラクティス
  10. Java Enumの文字列表現マスター:デフォルト、オーバーライド、高度なパターン
  11. Java String.indexOf()マスター:部分文字列検索と実践例