سلوك محددة من المدلى بها من غير موقعة تشار * إلى شار * في الهدف-C
-
22-07-2019 - |
سؤال
وأنا أفهم الفرق بين unsigned char *
وchar *
أنواع. أفهم أيضا كيفية استخدام reinterpret_cast ليلقي unsigned char *
إلى char *
في C ++.
وأنا باستخدام sqlite3 في الهدف C وأسعى للحصول على 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 *
. لقد قرأت أن يلقي implemenation محددة وكنت أتساءل إذا كان هذا هو يلقي آمن في الهدف C أو إذا أنا ينبح تماما حتى الشجرة خاطئة؟
المحلول
وليس لديك الكثير لتقلق بسبب المدلى بها. في الواقع، يستخدم أبل نموذج التعليمات البرمجية نمط نفس رمز المحدد الذي تستخدمه:
self.title =
[NSString stringWithUTF8String:(char *)sqlite3_column_text(init_statement, 0)];
و(من الدرجة SQLite Book List
Book.m
).
وأعتقد أن عليك أن تكون أكثر قلقا مع قاعدة البيانات في الواقع وجود سلاسل UTF-8
.
لا تنتمي إلى StackOverflow