C++ で std::string 内の特定のパターンを検索することは可能ですか?
などは承知していますがfind()
、find_first_of()
もっと高度なものを探しています。
たとえば、次の XML 行を見てください。<book category="fantasy">Hitchhiker's guide to the galaxy </book>
を使用して解析したい場合はfind()
、次のように実行できます。
string line = "<book category=\"fantasy\">Hitchhiker's guide to the galaxy </book>"
size_t position = line.find('>');
std::string tmp = line.substr(0,position);
position = tmp.find(' ');
std::string node_name = tmp.substr(0, position);
std::string parameters = tmp.substr(position+1);
...
これは非常に「ぎこちなく」、非効率的です。次のように、複数のタグが互いにネストされている場合も失敗します。
<bookstore><book category=\"fantasy\">Hitchhiker's guide to the galaxy </book></bookstore>
の値を取得し、パラメータとノード名に分割し、 と の間の値を検索して取得するなど、パターンを検索する方法はあり<*>
ますか?*
*
</nodename>
<nodename>
</nodename>