正規表現にマッチした文字列やその出現位置を調べたい場合には、std::match_resultsクラスを活用する必要があります。match_resultsは正規表現用の各種関数の第二引数に指定する形で利用します。char*>の別名であるstd::cmatchを用います。std::string文字列型の場合にはstd::smatchを用います。正規表現中の丸括弧()によってキャプチャされた文字列はサブマッチとして抽出できます。(`(\\d+)`によるサブマッチ)}std::regex_match関数は正規表現の完全一致を判定する関数です。std::regex_searchは部分一致を判定します。部分一致した文字列のパターンを全て抽出したい場合には、繰り返し文を用いた部分検索、またはイテレータを用いた探索が必要となります。イテレータによるパターン抽出(regex_iterator)std::string文字列の検索を行う場合にはstd::sregex_iteratorイテレータを用いることができます。"99"}C言語スタイルの文字列の場合はstd::cregex_iteratorイテレータを用います。文字列がマッチするたびに検索開始位置をずらしていく方法です。"99"}m[0].secondはマッチした文字列の次の要素を指すポインタ/イテレータです。C言語スタイルの文字列の場合は以下の方法を用います。char*)とC++の文字列(std::string)でそれぞれ適切なmatch_resultsを用いる必要があります。std::match_results<std::wstring::const_iterator>文字列型std::stringに対する検索を行う際には、一時オブジェクトによる検索が行えなくなるため注意が必要です。std::regex("."));std::regexなどのbasic_regexをregex_iteratorに渡す際にも同様の問題が発生します。