1

unsigned char *我理解和char *类型之间的区别。我也了解如何在 C++中使用 reinterpret_cast 将 anunsigned char *转换为 a 。char *

我在 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 中的安全演员表,或者我是否完全在错误的树上吠叫?

4

1 回答 1

4

由于演员阵容,您不必担心太多。实际上,Apple 示例代码使用与您使用的完全相同的代码模式:

self.title =
  [NSString stringWithUTF8String:(char *)sqlite3_column_text(init_statement, 0)];

(从SQLite Book List Book.m课堂上)。

我认为您应该更关心实际具有UTF-8字符串的数据库。

于 2009-08-05T20:11:17.670 回答