私のプログラムの1つでは、で動作するいくつかのレガシーコードとやり取りする必要があり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*
永遠に住んでいないが、文字列が破壊されるまで