将 int 转换为 wchar_t 的正确方法是啥?
Posted
技术标签:
【中文标题】将 int 转换为 wchar_t 的正确方法是啥?【英文标题】:What is the proper way to convert an int to wchar_t?将 int 转换为 wchar_t 的正确方法是什么? 【发布时间】:2012-08-16 19:38:33 【问题描述】:说你有“方法”
int Read(...)
unsigned char Byte = 0;
if(!ReadFile(.., &byte, 1,...))
return -1;
return Byte;
int ReadBlock(LPWSTR buffer, int cchBuffer ...)
int c = 0;
int cnt = 0;
do
if( (c=Read(...)) != -1 )
buffer[num++] = c; // Here.
while( num < ccBuffer );
return cnt;
将 int 正确地转换为 WCHAR 的正确方法是什么?
【问题讨论】:
你有什么问题?(wchar_t)the_int
有什么问题?
【参考方案1】:
阅读When should static_cast, dynamic_cast and reinterpret_cast be used? 后,我意识到是我对选角知识的缺乏促使我提出了这个问题。
【讨论】:
【参考方案2】:使用mbstowcs
(多字节字符串转宽字符串):
int ReadBlock(LPWSTR buffer, int cchBuffer ...)
int c = 0;
std::vector<char> narrow;
while((c=Read(...)) != -1 )
narrow.push_back(c);
narrow.push_back(0);
mbstowcs(buffer, &narrow.front(), cchBuffer);
mbstowcs
使用当前语言环境,因此应该与您输入的编码相匹配。
【讨论】:
@yanbellavance:听起来很奇怪。编写一个演示问题的小程序,然后您可以提出一个新问题。但是当您尝试隔离问题时,您可能会自己发现问题。【参考方案3】:convert char <= => wchar
in windows:
MultiByteToWideChar
WideCharToMultiByte
in linux:
mbsrtowcs
wcsrtombs
【讨论】:
【参考方案4】:#include<tchar.h>
int main()
int integer = 0;
wchar_t wideCharacter = (wchar_t)integer;
return 0;
【讨论】:
以上是关于将 int 转换为 wchar_t 的正确方法是啥?的主要内容,如果未能解决你的问题,请参考以下文章
将 UTF-16(Windows 上的 wchar_t)转换为 UTF32
将json数据(未定义/混乱)转换为DataFrame的正确方法是啥?