如何将wchar_t*转换为TCHAR[](而不是TCHAR*)
C++ How can I convert wchar_t* to TCHAR [] (not TCHAR*)
我想在一个大单元中添加一个小的附加选项,所以我不想处理大量的代码。
TCHAR szTempFileName[MAX_PATH];
TCHAR lpTempPathBuffer[MAX_PATH];
int uRetVal = 0;
GetTempPath(MAX_PATH, // length of the buffer
lpTempPathBuffer); // buffer for path
GetTempFileName(lpTempPathBuffer, // directory for tmp files
TEXT("QRCode_"), // temp file name prefix
0, // create unique name
szTempFileName); // buffer for name
我想把szTempFileName改成可选的wstring/std::string/wchar_t*参数。
解决方案:
将TCHAR更改为wchar_t
wcscpy (wchar_t [], wchat_t *);
通常,根本没有理由使用TCHAR
s。如果您正在使用wchar_t
,只需通过添加W
后缀直接调用Winapi函数的Unicode变体:
// Use wchar_t instead of TCHAR.
wchar_t szTempFileName[MAX_PATH];
wchar_t lpTempPathBuffer[MAX_PATH];
int uRetVal = 0;
// Call GetTempPathW directly.
GetTempPathW(MAX_PATH, lpTempPathBuffer);
// Use L"..." instead of TEXT("...").
GetTempFileNameW(lpTempPathBuffer, L"QRCode_", 0, szTempFileName);
继续使用现有的内容,并在最后转换为适当的字符串类型。让窗口能够很好地正确地使用c++字符串类型可能会让你的头发变白。
使用下面的typedef创建可以在整个代码中使用的字符串类型,而不是std::string或std::wstring:
typedef std::basic_string<TCHAR> tstring;
直接从缓冲区构造字符串:
tstring RealFileName(szTempFileName);
相关文章:
- MacOS通过在莫哈韦"wchar.h"下破碎的自制啤酒发出叮当声
- 检查TCHAR数组输入是否为带符号整数C++
- 不能将 "void *" 类型的值分配给类型 "TCHAR" 的实体
- VS Code C++:不准确的系统包括路径错误(wchar.h,boost/lambda/lambda.hpp)
- 'const char*'和'WCHAR*'
- 为什么需要与 WCHAR 相关的代码处理
- 如何在虚幻引擎4中将char*转换为TCHAR?
- 使用什么代替"静态常量 TCHAR *"
- 无法使用 mingw-w64 g++ 编译:找不到 <wchar.h>
- Visual Studio C++:不能使用类型为 "const wchar_t *" 的值来初始化类型为 "TCHAR *" 的实体
- 无法将参数 1 从 WCHAR 转换为常量字符 *
- C++ TCHAR* 的文本宏
- 无法使用 swprintf 在 WCHAR* 中打印字符*
- 用于从 ANSI 字符串转换为 std::basic_string <TCHAR>的正确函数声明
- -fshort-wchar 和 std::wstring - 分段错误
- 我应该使用 wchar 还是 char 来加密?
- 【MacOSX 10.15.1】使用 odb 生成数据库,致命错误:wchar.h:没有这样的文件或目录 #include < wchar.h>
- 如何在 C++ 中的 wcstok 中使用常量 WCHAR* 变量?
- 将字符串文本常量定义为 char const* 和 wchar const*
- 删除unicode def后,无法将QString转换为TCHAR