【问题标题】:How to convert TCHAR to const char?如何将 TCHAR 转换为 const char?
【发布时间】:2019-01-05 13:58:24
【问题描述】:

我发现最相似的是转换为 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);

【问题讨论】:

  • TCHAR 不是类型。它作为wchar_tchar 的定义,取决于是否定义了UNICODE 宏。在当前时代 - 它是向后兼容的剩余部分,您最好坚持使用 wchar_tchar
  • @Algirdas Preidžius Aišku, o gal žinote kaip konvertuoti į const char?
  • @Hurricane 如果你坚持英语会很有礼貌!!
  • 我尝试使用 const char PATH[] = path 得到错误 C2440: 'initializing' : cannot convert from 'char [260]' to 'const char []'
  • @Swordfish 抱歉,我无法编辑第一条评论

标签: c++ char constants tchar


【解决方案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 * 如果您需要将其作为参数传递给函数。 当你说,

“路径”显示错误

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

【讨论】:

    猜你喜欢
    • 2013-10-18
    • 2021-07-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多