2009-11-26 15 views

Odpowiedz

0

Można spróbować użyć

- (const char *)cStringUsingEncoding:(NSStringEncoding)encoding 
+0

Dziękuję za Szybka odpowiedź ... próbuję tego kodu .... FileString = [[NSString alloc] initWithContentsOfFile: defaultPath]; unsigned char * finalstring = [FileString UTF8Char]; ale nie kompiluje .. – KamalBhr

4

NSString reference jest pomoc. NSString ma te funkcje, aby przekonwertować go na c-string:

- (const char *)UTF8String; 
- (const char *)cStringUsingEncoding:(NSStringEncoding)encoding 
- (BOOL)getCString:(char *)buffer maxLength:(NSUInteger)maxBufferCount encoding:(NSStringEncoding)encoding 

I tam także similar question.

+0

dziękuję bardzo za szybką odpowiedź i mam rozwiązanie .. Pozdrawiam kamalBhr – KamalBhr

19

Cóż, pytanie jest trochę mylące, ponieważ pisanie nie jest jedyną rzeczą, o którą musisz się martwić. Nie tylko musisz martwić się dostępem, ale także musisz się martwić o kodowanie. Zakładając, że chcesz po prostu kodowanie UTF-8, niż można uciec:

NSString *myString = @"Hello"; 
const unsigned char *string = (const unsigned char *) [myString UTF8String]; 

Jeśli jednak potrzebny jest dostęp do jednej bajt na danych znakowych, niż prawdopodobnie chcesz jednego z innych kodowań, jak ASCII:

NSString *myString = @"Hello"; 
const unsigned char *string = (const unsigned char *) [myString cStringUsingEncoding:NSASCIIStringEncoding]; 

Innym cennym kodowania, który może chcesz użyć jest Latin1, który dostaje standardową ASCII wraz z akcentowanych znaków i symboli używanych przez większość języków w Europie Zachodniej i Stanach Zjednoczonych: NSISOLatin1StringEncoding

+0

+1 za "NSISOLatin1StringEncoding". 'NSASCIIStringEncoding' kończyło się niepowodzeniem, ponieważ mój ciąg zawierał glify o niepodpisanej wartości> 128. – PassKit