Стоит отметить, что, если Вы идете взломанным путем, это возможно (вероятно?), что обновление iPhone OS уничтожило бы Вашу способность запустить эти приложения. Я пошел бы официальным путем и заплатил бы 99$, которые будут авторизованы. В дополнение к не необходимости волноваться о Ваших ударяемых приложениях, Вы также получаете возможность (должны Вы выбирать) выпускать Ваши приложения на хранилище.
Невозможно просто использовать это:
_bstr_t b("Steve");
CString cs;
cs = (LPCTSTR) b;
Я думаю, что это должно работать, когда проект использует Unicode.
Если вы компилируете для Unicode - просто назначьте инкапсулированный BSTR для CString. Если вы компилируете для ANSI, вам придется использовать WideCharToMultiByte () для преобразования.
Также помните, что инкапсулированный BSTR может иметь значение null, что соответствует пустой строке. Если вы не позаботитесь об этом, ваша программа будет работать с неопределенным поведением.
CString имеет конструкторы и операторы присваивания как для LPCSTR, так и для LPCWSTR, поэтому нет необходимости вызывать WideCharToMultiByte, и вы не можете ошибиться при приведении типов в режимах Unicode или не-Unicode.
Вы можете просто назначить строку следующим образом:
csError = bstrErr.GetBSTR ();
Или используйте конструктор CString csError (bstrErr.GetBSTR ());
Я использую GetBSTR. Это то же самое, что преобразование bstrErr с (LPCWSTR), но я предпочитаю его для удобства чтения.