在我的一个程序中,我必须与一些与 const char*
一起工作的遗留代码进行接口。
假设我有一个这样的结构:
struct Foo
{
const char* server;
const char* name;
};
我的高级应用程序只处理 std::string
,所以我考虑使用 std::string::c_str()
来返回 const char*
指针。
但是 c_str()
的寿命是多少呢?
我能不面对未定义行为做这种事吗?
{
std::string server = "my_server";
std::string name = "my_name";
Foo foo;
foo.server = server.c_str();
foo.name = name.c_str();
// We use foo
use_foo(foo);
// Foo is about to be destroyed, before name and server
}
或者我应该立即将 c_str()
的结果复制到另一个地方?