在我的一个程序中,我必须与一些使用 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()
的结果复制到另一个位置?
.c_str()
时,我遇到了这个问题。我不明白为什么有时我只得到字符串的一部分,直到我理解const char*
并不永久存在,而是直到字符串被销毁。 - SomethingSomething