Re: WCHAR*->char*
От: Кодт Россия  
Дата: 12.07.05 14:33
Оценка:
Здравствуйте, MAPCUAHUH, Вы писали:

MAP>Здраствуйте,

MAP> Как перевести из WCHAR* в char*?

Это смотря что у тебя по этому указателю хранится...
Ну предположим, что строка. Тогда так

1) MS-specific — WideCharToMultiByte
// начальные условия
WCHAR const* src_string;
UINT dst_codepage; // CP_ACP - дефолтное, CP_UTF8 и т.п.

DWORD const flags = 0; // читай документацию
int dst_length = WideCharToMultiByte(dst_codepage, flags, src_string, -1, NULL, 0, NULL, NULL); // получил размер
char* dst_string = new char[dst_length+1]; // выделил память своим любимым способом
WideCharToMultiByte(dst_codepage, flags, src_string, -1, dst_string, dst_length+1, NULL, NULL); // преобразовал


2) STD C — wcstombs + пляски с locale
wchar_t const* src_string;

size_t dst_length = wcstombs(NULL,src_string,0);
char* dst_string = new char[dst_length+1];
wcstombs(dst_string,src_string,0);


3) libiconv — iconv_open, iconv, iconv_close (см. http://www.gnu.org/software/libiconv/)
Перекуём баги на фичи!
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.