我有一个 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