Sử dụng std.string.toString (char *) (D1/Phobos) hoặc std.conv.to (string) (D2):
// D1
import std.string;
...
string s = toString(c_str);
// D2
import std.conv;
...
string s = to!(string)(c_str);
Slice con trỏ :
string s = c_str[0..len];
(bạn không thể sử dụng "độ dài" vì nó có ý nghĩa đặc biệt với cú pháp lát).
Cả hai sẽ trả về một lát trên chuỗi C (do đó, tham chiếu chứ không phải bản sao). Sử dụng thuộc tính .dup để tạo bản sao.
Lưu ý rằng các chuỗi D được coi là mã hóa UTF-8. Nếu chuỗi của bạn ở dạng mã hóa khác, bạn sẽ cần chuyển đổi nó (ví dụ: sử dụng các hàm từ std.windows.charset).
Nguồn
2010-03-24 14:00:22
'toString' không được dùng trong D2. – kennytm
bạn không thể làm 'chuỗi s = chuỗi mới (c_str);' hoặc kiến thức C++ của tôi đã bị mờ một cách đáng kể? –
Câu hỏi nói D, không phải C++. –