C 字串與 NSString 互轉
C 字串(String)使用的是 char 類型,將每個char串連起來利用指標型式成為字串,Objective-C使用的是NSString,它是利用物件的方式存放整個字串,預設是使用Unicode 16bit存放,通常叫他 unichar ,所以在C String與NSString中間需要轉換,下面範例會介紹兩種互轉的方式。
- NSString to C String (NSString to String)
Apple官方NSString Class文件中有提到UTF8String
的NSString method,轉換完成後會在最後加個NULL當做字串的結尾,也符合C字串陣例的存放原則。
UTF8String
Returns a null-terminated UTF8 representation of the receiver.
所以:
//-----------start-----------
NSString nstr=@"Danny123";
const char *str=[nsstr UTF8String];
//------------end------------
- C String to NSString (String to NSString)
方法1:
Apple官方NSString Class文件中有提到stringWithUTF8String
,轉換後會返回使用UTF8編碼的C陣列。
stringWithUTF8String:
Returns a string created by copying the data from a given C array of UTF8-encoded bytes.
程式:
//-----------start-----------
NSString *new_nstr=[NSString stringWithUTF8String:databaseName];
//------------end------------
方法2:
Apple官方NSString Class文件中有提到stringWithCString:encoding
,轉換後會返回使用指定編碼的C陣列。
stringWithCString:encoding:
Returns a string containing the bytes in a given C array, interpreted according to a given encoding.
程式:
//-----------start-----------
NSString *new_nstr=[NSString stringWithCString:databaseName encoding:NSUTF8StringEncoding];
//------------end------------
在Objective-C中的C String存放都是以UTF-8編碼,所以整個轉換過程必需要以UTF-8為主。