簡體   English   中英

在Objective-C中定義了從unsigned char *到char *的強制轉換行為

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM