Как все говорили, необработанные строки ANSI очень просты. Просто используйте простые строки C или C ++ std :: string, если вам хочется компилировать Objective C ++.
Однако собственный формат строки Какао - UCS-2 - 2-байтовые символы фиксированной ширины. Строки NSS хранятся внутри, как UCS-2, т.е. е. как массивы неподписанных коротких. (Кстати, как в Win32 и в Java.) Общесистемными псевдонимами для этого типа данных являются unichar и UniChar. Здесь все становится сложнее.
GCC включает в себя тип данных wchar_t и позволяет вам определить необработанную строковую константу с широким символом, например:
wchar_t * ws = L "Эта строка с широким символом.";
Однако по умолчанию этот тип данных определен как 4-байтовый тип int и поэтому не совпадает с unichar Cocoa! Вы можете переопределить это, указав следующую опцию компилятора:
-fshort-WCHAR
но тогда вы потеряете функции RTL с широким символом C (wcslen (), wcscpy () и т. Д.) - RTL был скомпилирован без этой опции и предполагает 4-байтовый wchar_t. Не особенно сложно переопределить эти функции вручную. Ваш звонок.
Если у вас есть действительно 2-байтовые необработанные строки wchar_t, вы можете легко преобразовать их в строки NSStrings и обратно:
wchar_t *ws = L"Hello";
NSString *s = [NSString stringWithCharacters:(const unichar*)ws length:5];
В отличие от всех других методов [stringWithXXX], этот не требует преобразования кодовой страницы.