使用wcstombs_s()把WCHAR字串转换成char字串,怎么转不了中文?
我用msdn的例子来试验:
#include "stdafx.h"
#include <stdio.h>
#include <stdlib.h>
#include <assert.h>
#define BUFFER_SIZE 100
int main( void )
{
size_t i;
char * pMBBuffer = (char *)malloc( BUFFER_SIZE );
wchar_t* pWCBuffer = L"Hello, world."; //(1)
//wchar_t* pWCBuffer = L"世界, 你好."; //换成_T("世界, 你好.")也不行 //(2)
printf( "Convert wide-character string:\n" );
// Conversion
wcstombs_s(&i, pMBBuffer, (size_t)BUFFER_SIZE,
pWCBuffer, (size_t)BUFFER_SIZE );
// Output
printf(" Characters converted: %u\n", i);
printf(" Multibyte character: %s\n\n",
pMBBuffer );
// Free multibyte character buffer
if (pMBBuffer)
{
free(pMBBuffer);
}
}
msdn的代码肯定是没事的,但我把上面(1)句注释掉换成(2)句,即字串换成中文,就不行了!打印不出来转换后的文字,设断点查pMBBuffer,发现wcstombs_s调用后pMBBuffer是空的,什么都没转出来。
为什么英文可以中文不行?why?