问题
Say you have "methods"
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;
}
What is the proper way to get that int correctly to WCHAR?
回答1:
convert char <= => wchar
in windows:
MultiByteToWideChar
WideCharToMultiByte
in linux:
mbsrtowcs
wcsrtombs
回答2:
Use mbstowcs
(multibyte string to wide character string) :
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
uses the current locale, so that should match the encoding of your input.
回答3:
After reading When should static_cast, dynamic_cast and reinterpret_cast be used?, I realize it was my lack of knowledge about casting that triggered me to ask this question.
回答4:
#include<tchar.h>
int main()
{
int integer = 0;
wchar_t wideCharacter = (wchar_t)integer;
return 0;
}
来源:https://stackoverflow.com/questions/12055197/what-is-the-proper-way-to-convert-an-int-to-wchar-t