2 lsq8178 lsq8178 于 2014.03.31 08:57 提问

char* 转 wchar_t* 什么情况下一点错都不出

char* 转 wchar_t*
我用的是这个方法
char* text = "abcdef";
int nu = strlen(text);
int n =(size_t) MultiByteToWideChar( CP_ACP, 0, text,(int)nu, NULL, 0) + 2 ;
wchar_t* pwstr = new wchar_t[n];
if (pwstr)
{
memset(pwstr, 0x00, sizeof(wchar_t) * n);
MultiByteToWideChar(CP_ACP, 0, text, nu, pwstr, nu);
}
转好之后将 pwstr传给一个函数,这个函数的实现是别人写的一个库,此时会报错,错误为:内存xxxx出的_com_error_,
然后我这样写:wchar_t* wstr = L"abcdef";
再将wstr传给那个函数时就正确了,很郁闷。
最后我将转化部分的
wchar_t* pwstr = new wchar_t[n];
换成static wchar_t pwstr[50];再去执行就好了,很不理解,请各位大牛看看,帮帮忙!

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
C++ WINDOWS下 wchar_t *和char * 相互转化总结篇
说道wchar_t和char两个类型大家都不会陌生 wchar_t:在windows下是Unicode 16编码,也就是俗称宽字节 char:当然就是指一个字节,在windows下面默认是gbk编码的 所以在windows 下 wchar_t 转 char也就是编码转化 直接贴出wchar_t *字符串和char *字符串的集中互转方法 方法一:利用Windows的宏W2
C/C++中char*与wchar_t*之间的转换
代码编译运行环境:VC++2012+Debug+Win321.问题描述char字符与wchar_t字符由于编码不同,所以在char*和wchar_t*之间使用强制类型转换达不到正确转换字符串的目的。考察如下程序。#include <iostream> using namespace std;int main(){ wchar_t* str=L"ABC我们&a
char 转wchar_t 及wchar_t转char
char 转wchar_t 及wchar_t转char的实现函数及原理说明
wchar_t*和char*之间的互相转换的那些事
http://blog.csdn.net/hellward/article/details/5364927 最近在看一写PE文件格式的东西,想做一个读取PE文件信息的小工具,中间遇到将LPVOID格式无法转换到LPTSTR格式,强制转换屡试屡败,多显示乱码。我们知道LPVOID格式可以直接转换到char *,最后发现一篇写char*与wchar_t*格式互相转换的文章,引用文中代码转换成功。
Linux下 wchar_t 与char 转换
为了支持多语言,需要支持宽字符,Linux下用wchar_t表示,wchar_t最大长度4个字节,已经可以囊括世界上所有的语言编码,中文字符在gb2312编码下用2个字节表示,但用utf-8编码需要3个字节表示。 Linux下的系统调用,大部分都已经有对应的宽字符版本。具体可参照对照表 但仍有一些系统调用是没有宽字符版本的,例如fopen系列函数: FILE *fopen(const ...
wchar_t和char,WCHAR和CHAR的区别和互相转化
win32应用程序的低层winnt.h头文件: #ifndef VOID #define VOID void typedef char CHAR; typedef short SHORT; typedef long LONG; #if !defined(MIDL_PASS) typedef int INT; #endif #endif #ifndef _MAC//苹果的MA
Linux 下char转换为wchar_t
LInux下使用mbstowcs函数可以将char转化为wchar_t 函数含义:convert a multibyte string to a wide char string 说明:       The behaviour of mbstowcs depends on the LC_CTYPE category of the current locale 返回值:   The  mbst
把char*转换为wchar_t*
把char*转换为wchar_t* 用stdlib.h中的mbstowcs_s函数,可以通过下面的例子了解其用法:   char *CStr = "string to convert"; size_t len = strlen(CStr) + 1; size_t converted = 0; wchar_t *WStr; WStr=(wchar_t*)
VC++ 无法将“char *”转换为“const wchar_t *const”
将字符串前边加上LPCWSTR即可。 例如: char* a; wchar_t * b; b=LPCWSTR(a);
c语言char和wchar_t 转换
       最近遇到一个在C语言当中处理中文的问题,因为汉字和ascii不同,汉字是多字节编码方式,ascii只用一个字节表示,所以在用c语言提供的strlen函数得到的长度是字节长度;  以下都是utf-8编码方式,为了得到一个字符(汉字和ascii)有几种处理方式:         1.  自己写程序判断是否为汉字,通过第一个字节判断,以下是我写的一部分代码;