读书人

CString的连接两个字符串有关问题

发布时间: 2012-10-19 16:53:36 作者: rapoo

CString的连接两个字符串问题!

C/C++ code
CString szTarget = R.GetAt(i).Target_address;CString szLink = R.GetAt(i).Link_address;CString szType = R.GetAt(i).szType;CString mklink = _T("/c mklink");CString szMsg = _T("");CString szCommand;//szCommand.Format(_T("%s %s %s %s"), mklink, szType, szLink, szTarget);szCommand = mklink + _T(" ") + szType + _T(" ") + szLink + _T(" ") + szTarget;MessageBox(szCommand);

发现了用+来连接会出现只连接前3个,后面的都没有连接到,但是用format就可以完整连接到一起!这是为什么?求解释!

[解决办法]
这个问题是因为:
CString szTarget = R.GetAt(i).Target_address;
CString szLink = R.GetAt(i).Link_address;
CString szType = R.GetAt(i).szType;
这些变量中有可能有\0结尾的字符。
CString 在遇到\0后自动截断后面的字符,只保留\0前面的。

例:
CString szTarget = "I ";
CString szLink = "LOVE ";
CString szType = "YOU";
szType = szType + '\0';
CString mklink = _T("/c mklink");
CString szMsg = _T("");
CString szCommand;
szCommand.Format(_T("%s %s %s %s"), mklink, szType, szLink, szTarget);
//szCommand = mklink + _T(" ") + szType + _T(" ") + szLink + _T(" ") + szTarget;
MessageBox(szCommand);
用Format是正确的。
而用+号连接时就截断了,输出如下:/c mklink YOU。
希望你能看懂。

读书人网 >VC/MFC

热点推荐