下面这个函数,我用char ansi[80] = "asdf";为参数调用的,可是返回值是101,我的问题如下:
1.为什么返回的是2进制啊?
2.即使是2进制(相当与10进制的5)也不是转换后的宽字符所需要的缓冲区大小啊,而是源字符串的大小嘛!~而我要得到宽字符所需要的缓冲区大小.
3._itoa,_itow的最后一个参数怎么用,MSDN上说传2-36的数,具体是什么意思啊?int AnsiToUnicode(PSTR pAnsiStr)
{
int nLenAnsiStr = 0; //获取转换字符串所需要的缓存大小
nLenAnsiStr = MultiByteToWideChar(CP_ACP, //指定在Ansi代码页查找
0, //该标志位通常为0
pAnsiStr, //要转换的Ansi字符串
-1, //-1用于确定源字符串的长度(到“\0”结束的长度)
NULL, //转换后存放宽字符的缓冲
0); //如果该标志为0,那么不执行字符串的转换,而是
//使转换取得成功所需要的缓存的值
WCHAR buf[80];
MessageBox(NULL,_itow(nLenAnsiStr,buf,2),_itow(nLenAnsiStr,buf,2),MB_OK);
return(RETURN_SUCCESS);
}
1.为什么返回的是2进制啊?
2.即使是2进制(相当与10进制的5)也不是转换后的宽字符所需要的缓冲区大小啊,而是源字符串的大小嘛!~而我要得到宽字符所需要的缓冲区大小.
3._itoa,_itow的最后一个参数怎么用,MSDN上说传2-36的数,具体是什么意思啊?int AnsiToUnicode(PSTR pAnsiStr)
{
int nLenAnsiStr = 0; //获取转换字符串所需要的缓存大小
nLenAnsiStr = MultiByteToWideChar(CP_ACP, //指定在Ansi代码页查找
0, //该标志位通常为0
pAnsiStr, //要转换的Ansi字符串
-1, //-1用于确定源字符串的长度(到“\0”结束的长度)
NULL, //转换后存放宽字符的缓冲
0); //如果该标志为0,那么不执行字符串的转换,而是
//使转换取得成功所需要的缓存的值
WCHAR buf[80];
MessageBox(NULL,_itow(nLenAnsiStr,buf,2),_itow(nLenAnsiStr,buf,2),MB_OK);
return(RETURN_SUCCESS);
}
解决方案 »
- 如何让菜单栏某一项变灰不可用?
- sql server最基本的连接字符串是什么样的?谁有例子?能连上就行。
- 请问ReleaseDC()中第一个参数有什么用啊?既然已经提供了DC的句柄,又为什么还要提供窗口句柄呢?
- 用c++模拟MFC的封装,但是运行没有消息响应!帮忙啊!
- 关闭IE时控件窗口竟然收不到通知,以致无法正常释放资源,郁闷散分
- 急急急,哪里有深入浅出MFC2/e随书光盘的源代码下载呀?
- 映射模式和坐标转换完全版(本人自创)!欢迎大家多提意见,跟贴有分!
- 请教:关于32为真彩色
- struct的问题(对不起,没分了)
- 解释typedef int (WINAPI *PFCALLBACK)(int Param1,int Param2) ?
- VC程序员群
- 如何做像 金山影霸2003 导航条的界面??就是在任何情况下,当鼠标移动到屏幕顶端时,就显示一个导航窗口,而不管此是程序有没有焦点。
这样就是十进制数!char *_itoa( int value, char *string, int radix );Base of value; must be in the range 2 – 36,表示为多少进制!
以WCHAR为基数