부호없는 숯 *에서 char *로 캐스트의 정의 된 동작
-
22-07-2019 - |
문제
나는 그 사이의 차이점을 이해합니다 unsigned char *
그리고 char *
유형. 또한 RenterPret_cast를 사용하여 캐스트하는 방법을 이해합니다. unsigned char *
a char *
C ++에서.
나는 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 *
. 나는 캐스트가 구현된다는 것을 읽었으며 이것이 객관적인 C에서 안전한 캐스트인지 아니면 내가 잘못된 나무를 완전히 짖는 지 궁금하다.
해결책
캐스트로 인해 걱정할 것이 많지 않습니다. 실제로 Apple Sample Code는 사용중인 동일한 코드 패턴을 사용합니다.
self.title =
[NSString stringWithUTF8String:(char *)sqlite3_column_text(init_statement, 0)];
(에서 SQLite Book List
Book.m
수업).
실제로 데이터베이스에 더 관심이 있어야한다고 생각합니다. UTF-8
문자열.
제휴하지 않습니다 StackOverflow