最近使用MFC 写一个对话框程序,发现一个非常烦人的问题,就是我在一个类中的CString类型的变量是从ini文件读出的,在另类中调用这个全局变量时候,将这个变量使用多次后,变量的内容发生了变化,变成了乱码
举个例子
class A{
CString strA = _T"hello";
}
classB{
CString strB = A.strA ;
//这时候中断strB查看的值是正确的
string b = toString(strB);//就是在这里加了中断后,进入toString函数,发现传进来的值变成了乱码
//还有一种现象就是在调用外部类变量进行运算时候也会出问题
CString strC =strB + _T("world")//这里计算出来的strC 值为“world”;
}
就这个问题找了好久没有找到原因,只有解决办法使用Format格式化一下
CString strB ;
strB.Format(_T("%s"),A.strA );
这样就不会报错了,但是原因很值得去深挖一下。如果有遇到同样问题或知道原因的可以留言讨论一下