Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Convert TCHAR array to char array

How to convert to TCHAR[] to char[] ?

like image 644
maxy Avatar asked Nov 24 '09 10:11

maxy


2 Answers

Honestly, I don't know how to do it with arrays but with pointers, Microsoft provides us with some APIs, such as wctomb and wcstombs. First one is less secure than the second one. So I think you can do what you want to achieve with one array-to-pointer and one pointer-to-array casting like;

// ... your includes
#include <stdlib.h>
// ... your defines
#define MAX_LEN 100
// ... your codes
// I assume there is no any defined TCHAR array to be converted so far, so I'll create one
TCHAR c_wText[MAX_LEN] = _T("Hello world!");
// Now defining the char pointer to be a buffer for wcstomb/wcstombs
char c_szText[MAX_LEN];
wcstombs(c_szText, c_wText, wcslen(c_wText) + 1);
// ... and you're free to use your char array, c_szText

PS: Could not be the best solution but at least it's working and functional.

like image 178
ozanmuyes Avatar answered Sep 30 '22 10:09

ozanmuyes


TCHAR is a Microsoft-specific typedef for either char or wchar_t (a wide character).

Conversion to char depends on which of these it actually is. If TCHAR is actually a char, then you can do a simple cast, but if it is truly a wchar_t, you'll need a routine to convert between character sets. See the function MultiByteToWideChar().

like image 24
Nadir SOUALEM Avatar answered Sep 30 '22 10:09

Nadir SOUALEM