从字符* 转换为 wchar_t
conversion from char* to wchar_t
我需要从char*转换为wchar。这是我的做法。
char * retrunValue= getData();
size_t origsize = strlen(returnValue) + 1;
const size_t newsize = 200;
size_t convertedChars = 0;
wchar_t wcstring[newsize];
mbstowcs_s(&convertedChars, wcstring, origsize, returnValue, _TRUNCATE);
wcscat_s(wcstring, L" (wchar_t *)");
getData() 函数返回一个 char* 值,例如 "C:/Documents and Settings"当我尝试打印转换后的值"wcstring"时:该值不正确:它是类似于"C:/Documen9"之类的垃圾。1-请告诉我以这种方式从char*转换为wchar是否安全,就像我所做的那样2-如何获取getData()函数返回的原始值
谢谢问候
更新:
size_t origsize = strlen(returnValue) + 1;
const size_t newsize = 200;
size_t convertedChars = 0;
wchar_t wcstring[newsize];
wsprintf(wcstring, newsize, L"%S (wchar_t *)", returnValue);
添加了这个,但它说。"size_t 类型的参数与"LPCWSTR"类型的参数不兼容"
mbstowcs_s(&convertedChars, wcstring, newsize, returnValue, _TRUNCATE);
^^^
您传递了错误的尺寸。
不要使用 mbstowcs()
进行此类转换,除非char*
确实指向多字节字符串(并非每个char
字符串都是多字节字符串!当使用高于 127 char
的值(例如变音符号和其他特殊字符)时,它可能会中断。
由于您无论如何都想连接另一个字符串,只需使用 wsprintf()
:
// Visual Studio
wsprintf(wcstring, newsize, L"%S (wchar_t *)", returnValue);
// GCC
wsprintf(wcstring, newsize, L"%ls (wchar_t *)", returnValue);
相关文章:
- 无法将参数 1 从 WCHAR 转换为常量字符 *
- 如何将CString转换为使用WCHAR的Windows API和自定义函数?
- VC++ 2017 如何将常量wchar_t转换为 WCHAR *.
- 将WCHAR转换为LPCTSTR
- 在C++中读取和写入Windows注册表(如何将字符串转换为wchar(?))
- 在 unicode 中将 WCHAR 数组转换为 std::string?
- 将const wchar_t*转换为wchar*
- 将字符从 fget 转换为 Wchar*
- 如何在 iOS 中将 UTF-8 字符串转换为 wchar
- 如何将const char*转换为const WCHAR*
- 如何将wchar_t(或wchar_t*或CORBA::WChar*)转换为字符串
- 如何将strncpy()转换为WCHAR
- 通过COM将C#字符串转换为C++WCHAR*
- 将wchar转换为字符串并推入矢量(C/C++)
- 将 WCHAR[260] 转换为 std::string
- 如何在C++中将WCHAR*转换为字符串,反之亦然
- "strcpy":无法将参数 2 从"WCHAR *"转换为"常量字符 *
- 在Qt中将WCHAR转换为QString
- 如何将WCHAR转换为CString
- C++:将WCHAR转换为LPCWSTR - 实际工作示例