从无符号字符*投的行为定义为char *在Objective-C
-
22-07-2019 - |
题
我明白unsigned char *
和char *
类型之间的差异。我也知道如何使用的reinterpret_cast投的unsigned char *
到char *
在C ++。
我使用的Objective-C的sqlite3的,我试图得到一个呼叫的NSString
sqlite3_column_text(...);
要做到这一点,我基本上做的:
char *cParam = (char *)sqlite3_column_text(compiledStatementPtr, 0);
NSString *aParam = nil;
if (cParam) {
aParam = [NSString stringWithUTF8String:cParam];
}
sqlite3_column_text()
,然而,返回unsigned char *
,我很担心投地char *
的行为。我读过,中投是具体的实行,我想知道这是否是在Objective-C,或者如果我完全找错了树一个安全的投?
解决方案
您没有太多的担心,由于演员。实际上,苹果示例代码使用您所使用的完全相同的代码图案:
self.title =
[NSString stringWithUTF8String:(char *)sqlite3_column_text(init_statement, 0)];
(来自SQLite Book List
Book.m
类)。
我想你应该更关心实际上有UTF-8
字符串数据库。
不隶属于 StackOverflow