使用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?
#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?
...全文
相关推荐
CString,int,string,char之间的转换(C/C++)
CString,int,string,char之间的转换(C/C++),用于新手入门使用,希望能够带来帮助
C++各种字符串类型之间进行转换
各种实例很全面,概括性很强。 比较全面的介绍各种类型之间的转换。
各种 C++ 字符串类型转换
各种 C++ 字符串类型转换(char *、wchar_t*、_bstr_t、CComBSTR、CString、basic_string 和 System.String) 本主题演示如何将各种 C++ 字符串类型转换为其他字符串。可以转换的字符串类型包括 char *、wchar_t*、_bstr_t、CComBSTR、CString、basic_string 和 System.String。在所有情况下,在将字符串转换为新类型时,都会创建字符串的副本。对新字符串进行的任何更改都不会影响原始字符串,反之亦然。
C++各种类型转换.docx
C++各种类型转换.docx
QString转换为TCHAR*
能够有效的将QString转换为TCHAR*,编译运行通过


