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

C++ STLのmatch_results::empty()関数の使い方と実例解説

この記事では、C++ STLにおける match_results::empty() 関数の動作、構文、および具体的な使用例について詳しく解説します。

C++ STLのmatch_resultsとは?

std::match_results は、正規表現によるマッチングの結果として得られた文字シーケンスの集合を格納するための、コンテナのような特殊なクラステンプレートです。このコンテナクラスでは、正規表現マッチ操作によって、対象シーケンス内のマッチ結果が保持されます。

match_results::empty()とは?

match_results::empty() 関数は、C++ STLに組み込まれている関数で、<regex> ヘッダーファイル内で定義されています。この関数は、関連付けられた smatch オブジェクトが空であるか、あるいはマッチ結果の値を保持しているかどうかを判定します。マッチオブジェクトが空、つまりマッチ結果が存在しない場合には true を返し、何らかの値が格納されている場合には false を返します。

構文

smatch_name.empty();

パラメータ

この関数は引数(パラメータ)を受け取りません。

戻り値

マッチオブジェクトが空である場合、またはコンテナ内にマッチ結果が存在しない場合には、ブール値 true を返します。逆に、マッチオブジェクトに何らかの値が格納されている、つまりマッチ結果が存在する場合には false を返します。

使用例

入力: std::smatch;
    smatch.empty();
出力: true

サンプルコード

#include<bits/stdc++.h>
using namespace std;
int main() {
    string str("Tutorials");
    regex R_1("Points.*");
    regex R_2("Tutorials.*");
    smatch Mat_1, Mat_2;
    regex_match(str, Mat_1, R_1);
    regex_match(str, Mat_2, R_2);
    if (Mat_1.empty()) {
        cout<<"String doesn't matches with Regex-1" << endl;
    } else {
        cout << "String matches with Regex-1" << endl;
    }
    if (Mat_2.empty()) {
        cout << "String doesn't matches with Regex-2" << endl;
    } else {
        cout << "String matches with Regex-1" << endl;
    }
    return 0;
}

実行結果

上記のコードを実行すると、以下のような出力が得られます。

String doesn't matches with Regex-1
String matches with Regex-1

この例では、文字列「Tutorials」に対して2つの異なる正規表現パターンでマッチングを行っています。最初のパターン「Points.*」は文字列と一致しないため、Mat_1 は空となり empty()true を返します。一方、2つ目のパターン「Tutorials.*」は文字列と一致するため、Mat_2 にはマッチ結果が格納され、empty()false を返します。このように、empty() 関数を使うことで、正規表現マッチが成功したかどうかを簡単に確認できます。


  1. C++ STL入門:setとunordered_setの違いを徹底解説

    本記事では、C++ STLにおける set と unordered_set の概要をわかりやすく解説し、両者の違いについても詳しく学んでいきます。 setとは? set(セット)は、Key型の一意なオブジェクトをソート済みの状態で格納する連想コンテナです。各要素は一度しか出現できず、重複した値は許されません。ユーザーは任意の順序で要素を挿入してsetを作成できますが、setは常にソートされた形でデータを返します。つまり、setにはデータを並べ替えるための仕組みが内部に組み込まれており、その処理はユーザーから抽象化されています。 setを使うべき主なケースは以下の通りです。 ソート済みのデ

  2. C++ STLのスタック(stack)徹底解説!LIFO構造の基本操作とサンプルコード

    C++ STLにおけるスタック(stack)は、LIFO(Last In First Out:後入れ先出し)構造として実装されるコンテナです。LIFOとは「最後に入れたものが最初に取り出される」という意味で、本を一冊ずつ積み上げた山をイメージすると理解しやすいでしょう。一番上に置いた本(=最後に挿入された要素)が最初に取り出されることから、この構造はLIFOと呼ばれています。 スタックで使える主な操作 1. top() – 最上位要素の取得 スタックの最上位(先頭)にある要素への参照を返します。要素自体は削除されません。 構文:name_of_stack.top() 引数:なし 戻り値:ス