C++
 Computer >> コンピューター >  >> プログラミング >> C++

C++のstringクラスとは?文字列操作の基本と実践的な応用例を解説

文字列(String)とは、複数の文字が順番に並んだシーケンスのことです。C++プログラミング言語において、文字列は主に以下の2つの方法で定義することができます。

  • Cスタイル文字列:文字列を文字型の配列(char配列)として扱います。
  • C++のstringクラス:標準ライブラリが提供する文字列クラスを使用します。

C++におけるstringクラスの特徴

C++のstringクラスは、<string>ヘッダ(またはbits/stdc++.h)をインクルードすることで利用できます。内部的には文字配列としてメモリ上に格納されますが、ユーザーから見ると一つの文字列オブジェクトとして扱えるのが大きな特徴です。

さらに、C++にはstringクラスを支援する多数のメソッドが用意されており、オブジェクトの適切な操作やコード効率の向上に大きく貢献します。例えば、長さを取得するlength()、指定位置の文字へアクセスするat()、部分文字列を検索するfind()、置換を行うreplace()などが代表的です。

stringクラスの実践的な応用例

ここでは、文字列操作の典型的な活用例として、次の2つの処理を紹介します。

  • 文字列が数字のみで構成されているかどうかを判定する
  • 文字列内のスペースを「%20」に置き換える(URLエンコード処理)

サンプルコード

#include <bits/stdc++.h>
using namespace std;

// 数字のみで構成されているかチェックする関数
bool charcheck(string str) {
    int l = str.length();
    for (int i = 0; i < l; i++) {
        if (str.at(i) < '0' || str.at(i) > '9')
            return false;
    }
    return true;
}

// スペースを「%20」に置換する関数
string replacedotWith20(string str) {
    string replaceby = "%20";
    int n = 0;
    while ((n = str.find(" ", n)) != string::npos) {
        str.replace(n, 1, replaceby);
        n += replaceby.length();
    }
    return str;
}

int main() {
    string num = "3452i";
    if (charcheck(num))
        cout << "string contains only digit" << endl;
    else
        cout << "string contains other characters too" << endl;

    string url = "google com in";
    cout << replacedotWith20(url) << endl;
    return 0;
}

実行結果

string contains other characters too
google%20com%20in

このように、変数numにはアルファベット「i」が含まれているため、「他の文字も含まれている」と判定されます。また、URL文字列内のスペースはすべて「%20」に置換されています。

まとめ

スペースを「%20」に置き換える処理は、Web開発においてURLを扱う際によく利用されるテクニックです。C++のstringクラスを使いこなすことで、このような文字列処理を簡潔かつ安全に実装できます。Cスタイルの文字配列と比べて、サイズ管理やメモリ操作を意識せずに済む点も、stringクラスの大きなメリットといえるでしょう。

  1. C++のstatic_castとdynamic_castの違いと使い分けを徹底解説

    static_castとは static_castは、通常の型変換に使用されるキャストです。コンパイラが行う暗黙の型変換(implicit type coercion)も担当しており、明示的に記述することも可能です。floatからint、charからintへの変換のように、基本的な数値型同士の変換に適しています。また、継承関係にあるクラス間のポインタ変換にも利用できます。ただし、互換性のない型同士の変換を試みると、コンパイル時にエラーが発生します。 コード例 #include<iostream> using namespace std; class Base {}; class

  2. C#のRegexクラスとは?主なメソッド一覧と使い方を実例付きで解説

    C#のRegexクラスとはRegexクラスは、正規表現を扱うためのクラスです。正規表現とは、入力テキストとの照合(マッチング)を行うためのパターンのことであり、文字列の検索や置換、抽出などを柔軟かつ効率的に行うことができます。ここでは、Regexクラスでよく使われる主要なメソッドを紹介します。Regexクラスの主なメソッド一覧No.メソッドと説明1public bool IsMatch(string input)Regexコンストラクターで指定した正規表現が、指定された入力文字列内に一致する部分を持つかどうかを判定します。2public bool IsMatch(string input, i