Iphone stringWithCString已弃用。。。那么,我如何使用sysctlbyname返回的char*?
我知道在SQLite中更改Iphone stringWithCString已弃用。。。那么,我如何使用sysctlbyname返回的char*?,iphone,ios,sdk,nsstring,Iphone,Ios,Sdk,Nsstring,我知道在SQLite中更改stringWithCString时如何处理此问题。。。您只需stringWithUTF8String。当一个字符由sysctlbyname返回时,它是否与char*相同?(见下面的代码) 提前谢谢 如果您使用的C字符串是UTF-8编码的,则使用stringWithUTF8String:。如果是纯ASCII,则使用stringWithCString:encoding:编码为NSASCIIStringEncoding。否则,它可能使用拉丁语-1编码,在这种情况下,您应该使
stringWithCString
时如何处理此问题。。。您只需stringWithUTF8String
。当一个字符由sysctlbyname
返回时,它是否与char*
相同?(见下面的代码)
提前谢谢 如果您使用的C字符串是UTF-8编码的,则使用
stringWithUTF8String:
。如果是纯ASCII,则使用stringWithCString:encoding:
编码为NSASCIIStringEncoding
。否则,它可能使用拉丁语-1编码,在这种情况下,您应该使用stringWithCString:encoding:
编码为NSISOLatin1StringEncoding
在这种情况下,sysctlbyname
几乎肯定会返回一个ASCII字符串,因此您应该执行以下操作:
NSString *platform = [NSString stringWithCString:machine encoding:NSASCIIStringEncoding];
尽管使用其他两种方法中的任何一种都不会对您造成伤害。您只需指定字符串编码,在sysctlbyname的情况下为ASCII:
NSString *platform = [NSString stringWithCString:machine encoding:NSASCIIStringEncoding];
stringWithCString:已被弃用,取而代之的是stringWithCString:编码:。您可以使用[NSString defaultCStringEncoding]来准确地再现stringWithCString的行为:但是您最好指定NSASCIIStringEncoding或NSUTF8StringEncoding。sysctlbyname返回的编码似乎是隐式的,因此7位ASCII是安全的,这两种编码都适用 如果您在
errorString = [NSString stringWithCString:iax_errstr];
试试这个
errorString = [NSString stringWithCString:iax_errstr encoding:NSASCIIStringEncoding]
是,stringWithUTF8String返回字符串。
errorString = [NSString stringWithCString:iax_errstr encoding:NSASCIIStringEncoding]