こんにちは、ブースト ライブラリのトークナイザー クラスを使用してトークナイザーを機能させようとしています。ブーストのドキュメントでこのチュートリアルを見つけました:
http://www.boost.org/doc/libs/1 _36 _0/libs/tokenizer/escaped _list _separator.htm
問題は、エスケープされた _list _separator("","",""); の引数を取得できないことです。
しかし、boost/tokenizer.hpp ファイルを変更すると動作します。しかし、それはそうではなく、理想的な解決策は、エスケープされた _list _separator に異なる引数を取得するために不足しているものがあるかどうか疑問に思っていました。
エスケープ用に " と ' を使用してスペースで分割し、引用符で囲まれた文字列内にエスケープ文字を入れないようにしたい。
これは、ゲーム内コンソール システムの引数解析システムに使用されます。
include <iostream>
include <boost/tokenizer.hpp>
include <string>
int main()
{
using namespace std;
using namespace boost;
string s = "exec script1 \"script argument number one\"";
string separator1("");//dont let quoted arguments escape themselves
string separator2(" ");//split on spaces
string separator3("\"\'");//let it have quoted arguments
tokenizer<escaped_list_separator<char>(separator1,separator2,separator3)> tok(s);
for(tokenizer<escaped_list_separator<char>(separator1,separator2,separator3)>::iterator beg=tok.begin(); beg!=tok.end();++beg)
{
cout << *beg << "\n";
}
}
Visual Studio 2005 からのエラーはエラー C2974 です: 'boost::tokenizer' : 'TokenizerFunc' の無効なテンプレート引数、予期される型
編集: この質問は ferrucio によって分析され、peter によって説明されました。