2011-07-14 47 views
35

Tôi biết rằng câu hỏi này là có thể trùng lặp, nhưng ngay cả sau khi xem một số hướng dẫn và câu hỏi của Google ngay cả trên diễn đàn này, không ai trong số họ mang lại cho tôi câu trả lời hợp lý về chủ đề này.Làm thế nào để chuyển đổi NSString thành chuỗi C?

tôi có:

NSString *str = @"text"; 

Và tôi muốn làm một cái gì đó như:

char cstring [512] = str; 

(điều này chỉ cho thấy những gì tôi muốn làm, sau khi xem xét NSString Lớp Ref của Apple I didn' t thậm chí nghĩ về việc sử dụng nó).

Đến bây giờ tôi có:

char command [512] = [[NSString stringWithFormat:@"text"] cStringUsingEncoding:NSUTF8StringEncoding]; 

Tuy nhiên, với điều đó tôi nhận được lỗi.

Bất kỳ giải pháp nào?

Trả lời

117

thử const char *command = [str UTF8String];

+2

Rất cám ơn :)! – Matoe

26

Một chuỗi c được trả về như một con trỏ, không phải là một mảng ký tự. Để sử dụng nó, bạn có thể thay đổi biến của bạn thành con trỏ.

const char *command = [theString cStringUsingEncoding:NSUTF8StringEncoding]; 

Vì bạn muốn mã hóa UTF8, bạn có thể sử dụng phương thức tiện lợi UTF8String.

const char *command = [theString UTF8String]; 

Nếu bạn cần dữ liệu được lưu trữ trong một mảng ký tự, bạn có thể sử dụng phương pháp getCString:maxLength:encoding:, chuyển mảng đó làm bộ đệm. Điều này sẽ cho phép bạn lưu trữ chuỗi trực tiếp vào bộ đệm, và sẽ cho bạn biết nếu bộ đệm quá nhỏ.

char command[512]; 
if(![theString getCString:command maxLength:sizeof(command)/sizeof(*command) encoding:NSUTF8StringEncoding]) { 
    NSLog(@"Command buffer too small"); 
} 
Các vấn đề liên quan