在C中将char *数组转换为TCHAR数组

时间:2014-01-02 01:13:11

标签: c arrays

我已经看到了很多关于如何在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数组

2 个答案:

答案 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);
相关问题