मेरे एक कार्यक्रम में, मुझे कुछ विरासत कोड के साथ इंटरफ़ेस करना होगा जो साथ काम करता है 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*
यह नहीं समझ पाया कि यह हमेशा के लिए नहीं रहता है, लेकिन जब तक स्ट्रिंग नष्ट नहीं हो जाती