我已经看到了很多关于如何在C ++中将char数组转换为TCHAR数组的答案,但纯C中没有。
这是我尝试过的:
const TCHAR* ptr = NULL;
TCHAR newPath[100];
ptr = _tcsrchr(dllPath, _T('.'));
_tcsncpy(newPath, dllPath, ptr - dllPath + 1);
newPath[ptr - dllPath + 1] = NULL;
崩溃。这是另一回事,除了A2T似乎没有C(不是c ++)
TCHAR* newPath = A2T(dllPath);
那么,我怎样才能将char数组转换为C?
中的TCHAR数组答案 0 :(得分:1)
试试这个:
TCHAR *tstrTo;
int tstrLen;
#ifdef UNICODE
tstrLen = MultiByteToWideChar(CP_UTF8, 0, dllPath, strlen(dllPath), NULL, 0);
tstrTo = (TCHAR*) malloc(tstrLen * sizeof(TCHAR));
MultiByteToWideChar(CP_UTF8, 0, dllPath, strlen(dllPath), tstrTo, tstrLen);
#else
tstrTo = strdup(dllPath);
tstrLen = strlen(tstrTo);
#endif
// use tstrTo up to tstrLen characters as needed...
free(tstrTo);
答案 1 :(得分:0)
...过去24小时内我第二次在几分钟内就找到了自己问题的解决方案。
这有效:
int size_needed = MultiByteToWideChar(CP_UTF8, 0, &dllPath[0], (int)strlen(dllPath), NULL, 0);
TCHAR wstrTo[MAX_PATH];
MultiByteToWideChar(CP_UTF8, 0, &dllPath[0], (int)strlen(dllPath), &wstrTo[0], size_needed);