1

const_iteratorを、intおよびstring操作を実行できる型に変換する必要があります。results [1]には、操作する必要のあるregex_searchからのテキストが含まれています。私はすでに実行可能な形式にキャストしようとして数時間を費やしましたが、成功しませんでした...

boost::match_results<std::string::const_iterator> results;
      boost::regex ex(pattern, boost::regex::perl);
      if(boost::regex_search(line, results, ex))
        (results[1] > 10) ? cout << "Fail" : cout << "Pass";

ありがとう、ジョー

4

2 に答える 2

4

std::string次のようなconst文字列イテレータの一致しない結果を作成できます。

std::string result_string( results[1].first, results[1].second );

...または単に:

std::string result_string = results[1].str();

int次のように文字列を強制変換できます。

int result_int = boost::lexical_cast< int >( result_string );

...または、@ Jonathan Wakelyが指摘しているように、 C ++ 11を使用している場合:

int result_int = std::stoi( result_string );
于 2012-12-19T19:20:52.350 に答える
3

results[1].first一致したテキストの先頭を指すイテレータです。results[1].second一致したテキストの終わりを過ぎたところを指すイテレータです。このイテレータのペアを使用して、一致する個々の文字にアクセスします。一致したテキストのコピーを保持する文字列オブジェクトが必要な場合は、を使用しますresults[1].str()

于 2012-12-19T19:21:54.140 に答える