ในโปรแกรมของฉันฉันต้องเชื่อมต่อกับรหัสเดิมที่ใช้งาน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*
นั้นไม่ได้อยู่ตลอดไป แต่จนกว่าสตริงจะถูกทำลาย