2011-07-14 22 views
35

Bu sorunun olası bir kopya olduğunu biliyorum, ancak bu forumda bile bazı Google öğreticilerine ve sorularına baktıktan sonra bile bunların hiçbiri bana bu konu hakkında iyi bir cevap vermiyor.NSString C dizgisi nasıl dönüştürülür?

NSString *str = @"text"; 

Ve böyle bir şey yapmak istiyorum:

Ben bu sadece ben değil mi' Apple'ın NSString Sınıf Ref baktıktan sonra, ne yapmak istediğinizi gösterir

char cstring [512] = str; 

(bunu kullanmayı bile düşünmeyin).

Şimdiye kadar ben vardır:

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

Yine bununla I hatalarından olsun.

Herhangi bir çözüm?

cevap

117

C dizesinin olmayan karakter dizisi olarak, bir işaretçi olarak döndürülür const char *command = [str UTF8String];

+2

Büyük teşekkürler :)! – Matoe

26

deneyin. Bunu kullanmak için değişkeninizi bir işaretçiye dönüştürebilirsiniz. Eğer UTF8 kodlaması istediğim için

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

, sen UTF8String kolaylık yöntemini kullanabilirsiniz. Eğer bir karakter dizisi olarak depolanacak veri ihtiyaç

const char *command = [theString UTF8String]; 

, Eğer tampon olarak dizi geçen getCString:maxLength:encoding: yöntemi kullanabilir. Bu, dizeyi doğrudan arabelleğe depolamanıza ve arabelleğin çok küçük olup olmadığını size bildirir.

char command[512]; 
if(![theString getCString:command maxLength:sizeof(command)/sizeof(*command) encoding:NSUTF8StringEncoding]) { 
    NSLog(@"Command buffer too small"); 
}