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为主。