| ||||
| ||||
Требуется преобразовать строку AnsiString в Unicode. Делаю это следующим образом: AnsiString RecepientCA=StringGrid1->Cells[1][Row]; wchar_t bufCA[50]={0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,}; RecepientCA.WideChar(bufCA,RecepientCA.Length()); Если строка на русском то в итоге bufCA будет содержать что-то вроде \x0418\x0432.... то что надо, но если строка на английском то она не изменяется Почему так? | ||||
Ответы: | ||||
| ||||
Самый надежный способ использовать вот эту конструкцию: LPSTR строкаИсточникAnsi = "Тестовый ANSI"; LPWSTR строкаПриемникWide = NULL; int РазмерТребуемогоБуфера = MultiByteToWideChar(CP_ACP, 0,строкаИсточникAnsi,-1,строкаПриемникWide,0); if(РазмерТребуемогоБуфера>0) { строкаПриемникWide = (LPWSTR) new BYTE[РазмерТребуемогоБуфера]; //Собственно сама конвертация MultiByteToWideChar(CP_ACP, 0,LPCSTR строкаИсточникAnsi,-1,LPWSTR строкаПриемникWide,РазмерТребуемогоБуфера); } .......//Тут ещё что-то //При выходе из процедуры, настоятельно почистим за собой delete строкаПриемникWide; | ||||