近期在调试程序中遇到一个奇怪的问题,怀疑为编译器问题,调试代码如下:
CString RetData("Testlink,OK");
//CString strData(""); 加上这句就不出错!!
char szLen[4];
sprintf(szLen,"%04d",RetData.GetLength()+4);
RetData = szLen + RetData;
AfxMessageBox(RetData);
这段代码在调试过程中报错,问题原因应该是szLen的长度应该考虑到字符串结尾标志/0,关键是解决方法奇怪,一种解决方法是将szLen的长度改成5以上,这种方法是自然而然的,可就是另外一种方法想不明白为什么也可以解决问题,这另外的方法就是在szLen定义的前面新定义一个字符串变量,不管后面有没有引用都可以。比如上面的例子中加上strData的定义就可以了,纳闷,应该是编译器问题吧?各位大虾有何高见,请留言。。