を返す関数を持つC++ オブジェクト ( boost::format
) があります。str()
std::string
したがって、フォーマットされた C 文字列が必要な場合は、次のように記述する必要があります。
(boost::format("%1% %2%") % "1" % "2").str().c_str()
私はそれがかなり冗長だと思います、そして私はそれをたくさん必要としています。を持ち、次のように機能する派生クラスを作成することを考えましたoperator char*
(Ch = char または wchar_t):
operator Ch const* () const
{
return str().c_str();
}
しかしもちろん、 によって返される文字列はstr()
、関数が戻るときに割り当てが解除され、有効な C 文字列は返されません。
回避策はありますか?
回避策として、周囲の関数呼び出しが続く限り存在する文字列を作成する必要があります。
lib_function((boost::format("%1% %2%") % "1" % "2").str().c_str());
// can be deallocated here