2010-03-24 33 views

Trả lời

16
  1. 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); 
    
  2. 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).

+0

'toString' không được dùng trong D2. – kennytm

+0

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ể? –

+0

Câu hỏi nói D, không phải C++. –

Các vấn đề liên quan