gpt4 book ai didi

iphone - stringWithCString 已弃用...那么我如何使用 sysctlbyname 返回的 char*?

转载 作者:技术小花猫 更新时间:2023-10-29 10:44:17 31 4
gpt4 key购买 nike

我知道在 SQLite 中更改 stringWithCString 时如何处理这个问题...您只需 stringWithUTF8String 即可。这与 sysctlbyname 返回的 char * 是否相同? (见下面的代码)

- (NSString *) platform{
size_t size;
sysctlbyname("hw.machine", NULL, &size, NULL, 0);
char *machine = malloc(size);
sysctlbyname("hw.machine", machine, &size, NULL, 0);
NSString *platform = [NSString stringWithCString:machine];
free(machine);
return platform;
}

提前致谢!

最佳答案

如果您使用的 C 字符串是 UTF-8 编码的,则使用 stringWithUTF8String:。如果它是纯 ASCII,则使用 stringWithCString:encoding:,编码为 NSASCIIStringEncoding。否则,它可能使用 Latin-1 编码,在这种情况下,您应该使用 stringWithCString:encoding:NSISOLatin1StringEncoding 编码。

在这种情况下,sysctlbyname 几乎肯定会返回一个 ASCII 字符串,因此您应该这样做:

NSString *platform = [NSString stringWithCString:machine encoding:NSASCIIStringEncoding];

尽管使用其他两种方法中的任何一种都不会对您造成伤害。

关于iphone - stringWithCString 已弃用...那么我如何使用 sysctlbyname 返回的 char*?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6991455/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com