I've come across multiple instance of this pattern (with boost::filesystem only used as example):
boost::filesystem::path path = ...;
someFunctionTakingCStrings(path.string().c_str());
where
const std::string path::string() const
{
std::string tmp = ...
return tmp;
}
Although I have never experienced problem with this pattern, I was wondering when the string returned by sting()
is destroyed and whether the code accessing the c_str()
is safe as the c_str() lifetime is bound to std::string lifetime.