12

から正規表現で文字列を取得できますstd::regexか? または、後で使用する場合は、別の場所に保存する必要がありますか?

ブーストでは、これを行うことができます:

boost::regex reg("pattern");
string p = reg.str();

または << 演算子を使用

cout << reg;パターンを印刷します。

ただし、std::regexstr() または operator<< はありません。文字列を別の場所に保存する必要がありますか、それとも見つからないだけですか?

デバッガーでは、何が入っているかを確認できますstd::regex

4

2 に答える 2

8

N3225 のセクション 28.4 (ヘッダー<regex>の概要) を見たところ、実際、basic_regexテンプレートにはメンバー関数がなく、提供されstrていませんoperator<<

段落 28.8/2 は、これに関する少しの洞察を提供します。

特殊化されたタイプのオブジェクトは 、一連の オブジェクトを内部表現basic_regexに変換する責任があります。この表現の形式や、正規表現を操作するアルゴリズムによるアクセス方法は指定されていません。charT

私が理解しているのは、この文字列を保持するための実装を必要としない標準の命令basic_regexから構築できるということです。const charT *

于 2010-12-21T15:54:46.540 に答える
4

MSDN のドキュメントは、構築されたオブジェクトから正規表現パターンを取得する公にアクセス可能な方法がないことを示しているようです。そのため、文字列を自分で保存する必要があると言えます。

于 2010-12-21T15:53:45.153 に答える