[英]Defined behavior of cast from unsigned char * to char * in Objective-C
我理解unsigned char *
和char *
類型之間的區別。 我也理解如何使用reinterpret_cast將unsigned char *
轉換為C ++中的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中的安全演員,或者我是否完全咆哮錯誤的樹?
由於演員而你沒有太多擔心。 實際上,Apple示例代碼使用與您使用的完全相同的代碼模式:
self.title =
[NSString stringWithUTF8String:(char *)sqlite3_column_text(init_statement, 0)];
(來自SQLite Book List
Book.m
類)。
我認為你應該更關心實際擁有UTF-8
字符串的數據庫。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.