я сталкивался несколькими экземплярами этой модели (с буст :: файловая система используется только в качестве примера):Lifetime возвращенных строк и их .c_str()
boost::filesystem::path path = ...;
someFunctionTakingCStrings(path.string().c_str());
где
const std::string path::string() const
{
std::string tmp = ...
return tmp;
}
Хотя я никогда не испытывал проблем с этим шаблоном, мне было интересно, когда строка, возвращаемая sting()
, будет уничтожена и будет ли код, обращающийся к c_str()
, безопасным как c_str() lifetime is bound to std::string lifetime.
Почему это помечено как вопрос? – wasthishelpful
Потому что у него есть c_str() в нем – PhilLab
@PhilLab: но это не значит, что он будет * компилировать * в C ;-) – Bathsheba