在Objective-C中,`NSString` 与 C 字符串(`const char*`)之间的转换是非常常见的操作。以下是两种转换的基本方式:
### NSString 转 C 字符串
要将 `NSString` 转换为 C 字符串,你可以使用 `UTF8String` 方法(注意,返回的字符串在 `NSString` 对象存在期间有效,且不能被修改)。
-c
NSString *str = @"Hello, World!";
const char *cStr = [str UTF8String];
if (cStr) {
// 使用 cStr
printf("%s\n", cStr);
}
### C 字符串 转 NSString
要将 C 字符串转换为 `NSString`,你可以使用 `initWithCString:encoding:` 方法,其中 `encoding` 通常是 `NSUTF8StringEncoding`。
-c
const char *cStr = "Hello, World!";
NSString *str = [[NSString alloc] initWithCString:cStr encoding:NSUTF8StringEncoding];
// 或者使用更简洁的类方法
NSString *strSimpler = [NSString stringWithCString:cStr encoding:NSUTF8StringEncoding];
// 使用 str 或 strSimpler
NSLog(@"%@", str);
以上就是在 Objective-C 中 `NSString` 与 C 字符串之间转换的基本方法。这些操作在 iOS 和 macOS 开发中非常常见,特别是在处理来自 C/C++ 库或需要与底层系统API交互时。