0

最近、ファイル内のコンテンツを解析するための正規表現を作成しましたが、それは.NETにあり、C++プロジェクトでBoostを使用し始めました。

次のような行があります。これはstd::stringです。
123 12 E

解析して次のものを取得する必要があります。

float=1桁目
float=2桁目
文字列=3桁目アルファベット

私は正規表現を使用した経験があるので、正規表現が何であるかを知っています

const char* Regex = "^[[:space:]]*(\\d{1,3})[[:space:]]*(\\d{1,2})[[:space:]]*([NSEW])[[:space:]]*"

しかし、これをブーストと一緒に使用して、私のラインから3つのものを抽出する方法がわかりません。BoostのWebサイトで例を読んでみましたが、この小さな詳細を見つけるために行き詰まらなければならないので、それは私の質問に答えていないようでした。上記の正規表現でBoostRegexを使用して、結果を3つの変数で取得するにはどうすればよいですか?

4

1 に答える 1

1

http://www.boost.org/doc/libs/1_52_0/libs/regex/doc/html/boost_regex/introduction_and_overview.htmlに、マッチングの例を示します。最終match_results的には、一致を取得できる構造になります。

テストされていないコード

const char *str = "123 12 E";
boost::regex re ("^(\\d{1,3}) (\\d{1,2}) ([NSEW])$");
boost::cmatch mr;
if (boost::regex_match ( str, mr, re )) {
    std::cout << "There were: " << mr.size () - 1 << " fields matched" << std::endl;
    std::cout << "First part: " << mr[1] << std::endl;
    }
于 2013-01-07T15:43:59.350 に答える