hur.cn - 华软网

 热门搜索

CString和WCHAR数组相加出现了问题,请各位回答一下,谢谢!

  作者:未知    来源:网络    更新时间:2011/10/3
我有两个变量,一个WCHAR数组,一个CString,但是两个相加得到的CString变量里的内容却只有WCHAR的,请问这是怎么回事?
关键代码如下:
C++">
WCHAR sFileName[MAX_PATH+1]={0};
CString File;

        // pnotify->FileName 为 WCHAR _FILE_NOTIFY_INFORMATION::FileName[1]
        // pnotify->FileNameLength 为 DWORD _FILE_NOTIFY_INFORMATION::FileNameLength 
        memcpy(sFileName,pnotify->FileName,min( (MAX_PATH * sizeof(WCHAR)), pnotify->FileNameLength));

        // m_dir 为CString
        File = m_dir + sFileName;

        AfxMessageBox(File);  //打印出来的只有sFileName的内容,单独打印m_dir和sFileName的内容均正常

---华软 网友回答---
先把sFileName转成CString 试试
---华软网友回复---
好像 vc6.0 到 vs2010 就有区别的 提示 先转换
---华软网友回复---
WCHAR貌似不可以那样子相加呢。
---华软网友回复---
转换了,还是没用~
---华软网友回复---
我用的是VS2008~~
---华软网友回复---
VC6 没问题,在执行之前,看看 m_dir 的数据是多少,单步跟踪一下 File = m_dir + sFileName;
---华软网友回复---
跟踪了,截图如下:
上面sFileName和pi->m_dir的内容都是对的,但执行完File=pi->m_dir+sFileName后,File的内容和sFileName一样!~


---华软网友回复---
我刚试了下,用: CString File(m_dir);      File += sFileName; 来做,
结果追加时它把File里面原来的内容替换成sFileName,而不是追加~~~真晕了!
---华软网友回复---
看你的截图来分析,可能是跨线程使用 CString 导致的,在不同线程使用 LPCTSTR 进行参数的传递应该没有问题。      
华软声明:本内容来自网络,如有侵犯您版权请来信指出,本站立即删除。