سلوك محددة من المدلى بها من غير موقعة تشار * إلى شار * في الهدف-C

StackOverflow https://stackoverflow.com/questions/1235341

سؤال

وأنا أفهم الفرق بين 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.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top