Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Общие вопросы > wchar_t в char


Автор: Rickert 23.8.2006, 04:39
Делаю так:
Код

char* chr = new char[1024];
...
memset(chr, 0, 1024);
wcstombs(chr, cell->GetWString(), cell->GetStringLength());
...

cell->GetWString() - строка там стопудово, смотрел дебагом.
cell->GetStringLength() - не нулевое стопудово.
chr остаётся просто пустым smile 

Автор: Damarus 23.8.2006, 05:40
В cell строка видимо в кирилице. Тогда так:
Код

_wsetlocale(LC_ALL, L"Russian"); // setlocale(LC_ALL, "Russian");
...
char* chr = new char[1024];
...
memset(chr, 0, 1024);
wcstombs(chr, cell->GetWString(), cell->GetStringLength());
...

или так:
Код

_locale_t rus = _create_locale(LC_ALL, "Russian");
...
char* chr = new char[1024];
...
memset(chr, 0, 1024);
_wcstombs_l(chr, cell->GetWString(), cell->GetStringLength(), rus);
...
_free_locale(rus);


Добавлено @ 05:47 
Цитата(Rcikert @  23.8.2006,  05:39 Найти цитируемый пост)
char* chr = new char[1024];
...
memset(chr, 0, 1024);

Проще так:
Код

char* chr = new char[1024]();

Автор: Rickert 23.8.2006, 06:00
WideCharToMultiByte(CP_ACP, 0, cell->GetWString(), cell->GetStringLength(), chr, 1024, 0, 0);
Спасёт мир. ;) 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)