2012-03-29 20 views
2

文字列またはstd::stringを使用してboost::format型フォーマッタオブジェクトを作成するにはどうすればよいですか?
実行されない次のコードを使用しようとしています。boost :: format form c-stringまたはstd :: string

format fobj("first-> %1% , second-> %2%"); 
    std::stringstream s; 
    s<<fobj %1 %"%1%."; //so that I can use s.str() to create a boost object 
// How to create fmt object HERE 
    ss<< fmt %"replacedtext"; 
    cout<<s.str()<<endl; 
    cout<<ss.str(); 

サンプルの場合:コード(意味的に)次のコードと等価を達成する
S"初段> 1、2次>%1%。" でなければなりません
このs.str()文字列を使用して、別のフォーマットオブジェクトfmtを作成して、代替値を供給できるようにします。

答えて

4

私はあなたに何をしようとしているのか分かりません。boost::format文書は始めるのに適しています。クラスの使い方を示す数多くの明確な例があります。

フォーマッタオブジェクトを作成して、さまざまな操作でエレメントをフィードできます(たとえば、printfの場合、すべてのパラメータが渡されるva_argを満たす必要があります)。

boost::format fmter("%2% %1%"); 
fmter % 36; 
fmter % 77; 

結果から文字列を取得できます。

std::string s = fmter.str(); 

投げることができるnumber of exceptionsがあることに注意してください。

フォーマット文字列を動的に作成するものを探している場合は、さまざまな方法で対応できます。

std::string strFormatString = "first-> %1% second-> %2%"; 
boost::format formatter(strFormatString.c_str()); 
formatter % value1; 
formatter % strFormatString.c_str(); 
boost::format secondFormatter(formatter.str()); // etc etc etc 
+0

目的は、あなたが書かれたもの が のstd ::文字列s = fmter.strで何を書いた:)()に全く逆です。 は、意味的にはフォーマッタから文字列を取得すると言います。 私は対称的な意味で、文字列からフォーマッタを取得しました。文字列がフォーマッタなどのものである可能性があります – Abhinav

+0

編集された回答:-) – Konrad

+0

ありがとう@Konrad。それはまさに私が探していたものでした。 – Abhinav

関連する問題