Khi tôi chuyển đổi một char*
-std::string
sử dụng constructor:C++: Có char con trỏ để std :: string chuyển đổi sao chép nội dung?
char *ps = "Hello";
std::string str(ps);
Tôi biết rằng container std có xu hướng để sao chép giá trị khi họ được yêu cầu lưu trữ chúng. Toàn bộ chuỗi có được sao chép hoặc chỉ con trỏ không? nếu sau đó tôi str = "Bye"
sẽ thay đổi ps để trỏ đến "Tạm biệt"?
họ có các toán tử gán quá tải và thực sự nếu tôi đoán chính xác chúng sẽ sử dụng thuật toán sao chép và hoán đổi. và một đối tượng chuỗi tạm thời sẽ được tạo từ char *. –
@Koushik: bạn đang đoán sai. Tạo một bản sao nông ở đây sẽ phản trực giác và dễ bị lỗi. –
@VioletGiraffe có tôi nhận ra con trỏ không được sao chép và có một bản sao sâu và cần có một bộ đệm nội bộ để giữ điều này. –