我明白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字符串数据库。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top