字符串漫谈

来源:互联网 发布:淘宝价格不一样怎么办 编辑:程序博客网 时间:2024/05/03 11:57

CString

容易导致错误的一个构造函数:CString(TCHAR *,int n)

 因为这个构造函数的存在,往往导致GetLength时一个不易发现的bug,请看如下代码:

CString str(_T("abcd/n"),7);
 wcout<<(LPCTSTR)str;
wcout<<str.GetLength()<<endl;

请注意,使用iostream中的类输出CString时,仅使用wcout<<str是不行的,可以骗过编译器,但是输出的结果可不是你想要的.

这里的重点不是介绍wcout输出CString类型的字符串,而是GetLength()的返回值,居然是7不是4,在这段代码里看起来还比较容易理解为什么会这样,但如果在一段很长的代码里,CString是从另外一个文件里的某个函数得到的,而你一路F10/F11之后,把鼠标放到str上,显示"abcd",自动显示的信息有时不是该字符串的真实信息,于是在"监视"窗体中输入str,居然还是"abcd",但在"监视"窗体中输入str.GetLength()结果却是7,不知道你感觉如何,反正我觉得调式这个bug不是一件很愉快的事.

原创粉丝点击