Trong một trong các chương trình của tôi, tôi phải giao diện với một số mã kế thừa hoạt động với const char*.
Giả sử tôi có một cấu trúc giống như sau:
struct Foo
{
const char* server;
const char* name;
};
Ứng dụng cấp cao hơn của tôi chỉ giải quyết vấn đề std::string, vì vậy tôi nghĩ đến việc sử dụng std::string::c_str()để lấy lại const char*con trỏ.
Nhưng thời gian tồn tại là c_str()gì?
Tôi có thể làm điều gì đó như thế này mà không phải đối mặt với hành vi không xác định không?
{
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
}
Hay tôi phải ngay lập tức sao chép kết quả của c_str()đến một nơi khác?
Cảm ơn bạn.
.c_str(). Tôi không hiểu lý do tại sao đôi khi tôi chỉ nhận được một phần của chuỗi, cho đến khi tôi hiểu rằngconst char*không sống mãi mãi, nhưng cho đến khi chuỗi bị phá hủy