【发布时间】:2013-02-28 21:20:01
【问题描述】:
我想知道是否有一种简单的方法可以将 const char 与 NSString 进行比较,还是必须先将 const char 转换为 NSString?
我一直在查看 Apple 文档,但很难找到问题的答案。
【问题讨论】:
-
您是否有不想创建 NSString 的原因?
标签: objective-c nsstring const-char
我想知道是否有一种简单的方法可以将 const char 与 NSString 进行比较,还是必须先将 const char 转换为 NSString?
我一直在查看 Apple 文档,但很难找到问题的答案。
【问题讨论】:
标签: objective-c nsstring const-char
要么
NSString *str = @"string";
const char *myChar = "some string";
if (strcmp(myChar, str.UTF8String))
或
[str isEqualToString:[NSString stringWithUTF8String:myChar]];
核心基础路线也是一种选择:
CFStringRef myStr = CFSTR("some chars");
bool result = CFStringCompareWithOptions(myStr, ((__bridge CFStringRef)str),CFRangeMake(0,CFStringGetLength(myStr)), kCFCompareCaseInsensitive);
【讨论】:
strcmp,要么你忘记了strncmp的参数。
if (strcmp(myChar, str.UTF8String)) 应该是 if (strcmp(myChar, str.UTF8String) == 0)。 cplusplus.com/reference/cstring/strcmp
更好:
[str isEqualToString: @(myChar) ];
这并不比强制转换差,因为类型是不可通约的,所以你肯定需要它。
【讨论】:
您正在比较两种不同的事物,因此您必须将一种转换为另一种。采用哪种转换方式取决于您。
【讨论】: