怎么把TCHAR转换成const char?

时间:2018-07-28 20:18:03

标签: c++ char const tchar

我发现最相似的东西是转换为char。我正在尝试将TCHAR“路径”转换为const char。顺便说一句,我使用字符集:“未设置”。

#include <stdlib.h>
// ... your defines
#define MAX_LEN 100

TCHAR *systemDrive = getenv("systemDrive");
TCHAR path[_MAX_PATH];
_tcscpy(path, systemDrive);

TCHAR c_wPath[MAX_LEN] = _T("Hello world!");//this is original
//TCHAR c_wPath[MAX_LEN] = path; "path" shows error
char c_szPath[MAX_LEN];

wcstombs(c_szPath, c_wPath, wcslen(c_wPath) + 1);

1 个答案:

答案 0 :(得分:0)

TCHAR是不同类型的别名,具体取决于平台,定义的宏等。 因此,TCHAR可以是char(1个字节)或WCHAR(2个字节)的别名。 此外,WCHAR可以是wchar_t的别名或未签名的short。 但是,您使用wcstombs进行了转换,其签名如下 size_t wcstombs(char *, const wchar_t *, size_t), 所以你有

char* c_szPath 

指向转换后的char数组, 现在,如果您需要const char *,可能只需编写即可 const char * myPath = c_szPath,这是合法的,并使用myPath。 但是也许,甚至不需要,因为char *可以绑定到类型为的参数上 const char *,如果您需要将其传递给函数作为参数。 当你说

  

“路径”显示错误

这是因为数组类型不可分配。 我真的希望这会有所帮助。

相关问题