0

可能重复:
如何比较 char* 和 NSString?

如果我有:

char XYZ[256]=""; 

如何在 iOS Objective-C 程序中将此 char 数组与另一个字符串(例如“testing”)进行比较?

4

3 回答 3

3

使用strcmp

char XYZ[256] = "";
char *string = "some other string";

int order = strcmp(XYZ, string);

返回值
strcmp() 和 strncmp() 函数根据字符串 s1 大于、等于或小于字符串 s2 返回一个大于、等于或小于 0 的整数。比较是使用无符号字符完成的,因此\200' is greater than\0'。

于 2012-10-31T12:39:37.580 回答
0

您还可以将它们转换为 NSString,这会产生很多开销,但会将您的字符串带到 Objective-C 对象:

char XYZ[256] = "";
NSString *s = [[NSString alloc] initWithBytes:XYZ length:strlen(XYZ) encoding:[NSString defaultCStringEncoding]];
NSString *testing = @"testing";
if ([testing compare:s] == NSOrderedSame) {
    NSLog(@"They are hte same!");
}

请注意,这strcmp要快得多!

于 2012-10-31T12:43:18.153 回答
0

仅仅因为它是 iOS 并不意味着您不能“#include”string.h 并使用“strcmp”(现在如上所述)。

另一种方法是创建一个新的 NSString 并使用可比较的 iOS Objective-C 调用对其进行比较:

NSString myString = [NSString stringWithCString:XYZ encodingNSASCIIStringEncoding];

if(YES == [myString isEqualToString:@"testing"]){
    // Perform Code if the strings are equal
}else{
    // Perform Code if the strings are NOT equal
}
于 2012-10-31T12:43:57.560 回答