如何将 TCHAR 转换为 const char?
How to convert TCHAR to const char?
我发现最相似的是转换为char。我正在尝试将 TCHAR "path" 转换为 const char。顺便说一句,我使用字符集:"Not Set".
#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);
TCHAR 是不同类型的别名,具体取决于平台、定义的宏等。
因此,TCHAR 可以是 char(1 字节)或 WCHAR(2 字节)的别名。
此外,WCHAR 可以是 wchar_t 或 unsigned short 的别名。
但是,您使用具有类似签名的 wcstombs 进行了转换
size_t wcstombs(char *, const wchar_t *, size_t)
,
所以你有
char* c_szPath
指向转换后的字符数组,
现在,如果您需要 const char*,那么简单地编写可能就足够了
const char * myPath = c_szPath
,合法,使用myPath。
但也许,你甚至不需要这个,因为 char* 可以绑定到类型的参数上
const char * 如果你需要将它作为参数传递。
当你说,
"path" shows error
那是因为数组类型不可赋值。
我真的希望这能有所帮助。
我发现最相似的是转换为char。我正在尝试将 TCHAR "path" 转换为 const char。顺便说一句,我使用字符集:"Not Set".
#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);
TCHAR 是不同类型的别名,具体取决于平台、定义的宏等。
因此,TCHAR 可以是 char(1 字节)或 WCHAR(2 字节)的别名。
此外,WCHAR 可以是 wchar_t 或 unsigned short 的别名。
但是,您使用具有类似签名的 wcstombs 进行了转换
size_t wcstombs(char *, const wchar_t *, size_t)
,
所以你有
char* c_szPath
指向转换后的字符数组,
现在,如果您需要 const char*,那么简单地编写可能就足够了
const char * myPath = c_szPath
,合法,使用myPath。
但也许,你甚至不需要这个,因为 char* 可以绑定到类型的参数上
const char * 如果你需要将它作为参数传递。
当你说,
"path" shows error
那是因为数组类型不可赋值。 我真的希望这能有所帮助。