将wchar_t转换为char

时间:2013-12-16 11:39:45

标签: c++ winapi visual-c++

我正在尝试使用wchar_tchar转换为wcstombs。如果只转换了1个值,它可以正常工作,但是当转换的值超过1时,它会产生意外结果。 这些是我要转换的两个wchar_t值:

wchar_t szBuf[BUFF_LEN];
wchar_t szBuf1[BUFF_LEN];

并使用wcstombs进行转换:

char user[]=""; 
int  length = wcstombs(user,szBuf,250);
char pass[]="";
int  length1 = wcstombs(pass,szBuf1,250);

如果我szBuf中的 alice szBuf1中的 alice123 ,那么pass会给出正确的值user 1}}将具有类似 aalice123 的值。错误是什么?

1 个答案:

答案 0 :(得分:3)

您正在调用未定义的行为,因为您在缓冲区边界之外编写。您的userpass个缓冲区的长度均为1(它们是由""的副本初始化的数组)。所以你很高兴写入随机记忆,任何事情都可能发生。