A2W()有时候没有返回值?

red-fly 2016-06-02 10:17:41
一段代码,目的是从json串里取出ftp的连接信息,然后去连接ftp服务器,代码为连接服务器之前的部分,如下:

// 文件名
if ( jValCur["filename"].empty() )
return -1;
const char *fileName = jValCur["filename"].asCString();

// 用户名和密码
const char *userName = NULL;
if ( !jValCur["username"].empty() )
userName = jValCur["username"].asCString();
const char *password = NULL;
if ( !jValCur["password"].empty() )
password = jValCur["password"].asCString();

bool bPassive = true;
if ( !jValCur["passive"].empty() )
bPassive = ((jValCur["passive"].asInt()==1)?true:false);

USES_CONVERSION;
LPCTSTR uns;
if ( userName && strlen(userName) > 0 )
{
uns == A2W(userName);
//_lpa = userName;
//_convert = (lstrlenA(_lpa)+1);
//LPWSTR p = (LPWSTR)alloca(_convert*sizeof(WCHAR));
//uns = ATLA2WHELPER(p, _lpa, _convert, _acp);
}
else
uns = NULL;
LPCTSTR pw;
if ( password && strlen(password) > 0 )
pw = A2W(password);
else
pw = NULL;
LPCTSTR fn = A2W(fileName);


从非unicode到unicode的转换有三个,fileName,userName,password,通过A2W()转换后,fn、pw是正常的,只有uns失败,在debug状态下,uns的值是声明时的0xcccccccc,也就是A2W()并没有返回任何值(我对uns附值,A2W不改变uns的初始值),如果我使用 uns == A2W(userName); 一行下面的几行(对A2W宏的展开)进行转换就是可以的。

注:使用的是vs2010
好奇怪,有人遇到过吗?
...全文
203 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
red-fly 2016-07-18
  • 打赏
  • 举报
回复
引用 3 楼 xuddk727 的回复:
uns == A2W(userName); 哎。。。。不吐槽了
这么低级的错误
许文君 2016-07-14
  • 打赏
  • 举报
回复
uns == A2W(userName); 哎。。。。不吐槽了
red-fly 2016-06-02
  • 打赏
  • 举报
回复
引用 1 楼 zhao4zhong1 的回复:
VS IDE中,在不明白的符号A2W上点鼠标右键,选转到定义。
uns == A2W(userName); 下面被注释掉的几行就是其从其定义处拷贝过来后把里面的语句拆分开来的样子,这用几行代码就是可以的
赵4老师 2016-06-02
  • 打赏
  • 举报
回复
VS IDE中,在不明白的符号A2W上点鼠标右键,选转到定义。

3,245

社区成员

发帖
与我相关
我的任务
社区描述
ATL,Active Template Library活动(动态)模板库,是一种微软程序库,支持利用C++语言编写ASP代码以及其它ActiveX程序。
社区管理员
  • ATL/ActiveX/COM社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧