Cześć, próbuję przekonwertować standard std::string
na format, NSString
ale nie mam szczęścia.
Mogę pomyślnie przekonwertować plik an NSString
na a std::string
za pomocą następującego kodu
NSString *realm = @"Hollywood";
std::string REALM = [realm cStringUsingEncoding:[NSString defaultCStringEncoding]];
Jednak pojawia się błąd czasu kompilacji, gdy próbuję wykonać następujące czynności
NSString *errorMessage = [NSString stringWithCString:REALM encoding:[NSString defaultCStringEncoding]];
Pojawia się błąd
Cannot convert 'std::string' to 'const char*' in argument passing
Czy coś mi umyka?
Z góry dziękuję.
objective-c
nsstring
objective-c++
stdstring
Anthony McCormick
źródło
źródło
Odpowiedzi:
Pobierz ciąg c-string z std :: string do konwersji:
źródło
Po pierwsze, aby to zadziałało, musisz używać Objective-C ++; Najłatwiejszym sposobem upewnienia się, że jest to zmiana nazw wszystkich
*.m
plików na*.mm
Zdecydowanie najbardziej użytecznym (niezalecanym) ręcznym sposobem umieszczenia C ++
std::string
w plikuNSString
jest:To zadziała w większości przypadków - a jeśli nie wykonujesz określonego wykrywania i konwersji kodowania, UTF-8 da ci dobry wynik, ponieważ znaki inne niż łacińskie „po prostu działają”.
Jeśli jednak tworzysz większą aplikację lub nie tylko nad nią pracujesz - prawdopodobnie będziesz potrzebować czegoś, co jest łatwiejsze do zastosowania.
Na podstawie archiwów list dyskusyjnych cocoa-dev
Dzięki temu na miejscu (i odpowiednio
#import
zredagowanej) możesz teraz:I to samo w przypadku
std::wstring
, co jest więcej niż przydatne.źródło
==
ale raczej być „najbliższym” lub „najlepszym” przedstawieniem, jakie mogą wykonać. Odbiornikiem w tym przypadku jestNSString
implementacja klasy, a zwracana wartość nie jest obiektem Objective-C, więc mogą to również obejmować w jakimś standardowym języku.źródło
Apple ma teraz nowy sposób, w jaki chcą, abyś dokonał tej konwersji. W XCode7 użyłem opcji Edycja> Konwertuj> Na nowoczesną składnię celu C ..., aby się tego dowiedzieć. Używa skróconego symbolu @.
źródło
Odkryłem również, że:
Działa jak mistrz.
źródło
Oto fragment kodu / przykład:
źródło