最近有人在技术群里问一个关于使用MFC库中的CString类格式化字符串时遇到的问题,有时格式化出来的字符串有问题(不是预期的),有时会产生异常崩溃,让我们帮忙分析一下,看看是什么原因导致的。
后来到MSDN上查看CString类的Format接口说明,找到了答案,如下所示:
通过CString类对象调用CString::Fromat接口时,如果把当前CString对象也作为参数放到CString::Fromat接口,则可能会导致不可预知的异常。当然不一定会产生异常,我写过测试代码测试过,但如果实际运行时出问题,则是将当前CString对象作为Format参数导致的。
注意,此处并不是说,不能将CString对象作为参数传入到CString::Fromat接口中,而是不能将调用该接口的CString类对象作为参数传入到Format中!