Я преобразовываю (скорее) старый код C в VS2010. Все работает нормально, когда я компилирую программу с многобайтовой опцией, но мне нужно ее преобразовать в UNICODE.Как преобразовать char/* в wchar_t/* --- но
Я получаю много сообщений об ошибках, связанных с цепочкой (но это не странно). Моя проблема связана с тем, что мне приходится работать со строками wchar (из-за UNICODE), но мне также необходимо сохранить стандартные значения символов (программе необходимо записать данные в файл со стандартным кодом ascii).
Чтобы быть более понятным, UNICODE необходим для работы с Windows, но файлы должны быть сохранены в формате ascii. Я получаю ошибки во многих местах, и поэтому я решил поставить этот вопрос здесь.
Может ли somoene предложить наилучшую практику для такого рода проблем?
Спасибо заранее!
редактировать:
хорошо, я не эксперт по C/C++, это мой первый крупный проект. Я попробовал ваше предложение из первого ответа, как это:}
{
TCHAR* strz1=_T("%u blocks converted.");
if (n>0)
{
sprintf(str,strz1,n)
}
else
TCHAR* strz2=_T("No blocks found!");
sprintf(str,strz2);
TCHAR* strz3=_T("Status");
MessageBoxW(hwnd,str,strz3,MB_OK|MB_ICONINFORMATION);
return(fe);
}
Im получать известные ошибки:
ошибка C2664: «Sprintf»: не удается преобразовать параметр 2 из «TCHAR *» до «сопзЬ полукокса *
ошибка C2664: 'MessageBoxW': не удается преобразовать параметр 2 из 'гольца [32]' до '
Лучшая практика для вашего сценария («У меня есть ошибки. Я не скажу вам, что они есть»), чтобы исправить эту проблему. Я не скажу вам, как это сделать. –
Используйте 'UNICODE', но вызывайте функции, которые вам нужно использовать ASCII, как' MessageBoxA', а не 'MessageBoxW' или' MessageBox'. Используйте [WideCharToMultiByte] (http://msdn.microsoft.com/en-us/library/windows/desktop/dd374130 (v = vs.85) .aspx) для преобразования строки. Я не уверен, что все без примера. – chris
Итак, ваш вопрос заключается в том, как конвертировать между ASCII и Unicode? Вы пытались погулять? – tenfour