代码如下:
::GetPrivateProfileString(strlast,strtemkeyname,"",m_string.GetBuffer(20),20,"Test.ini");
if(m_string.IsEmpty())
{
    TRACE(m_string);//TRACE1
    CString tem("abc");
    m_string+=tem;
    TRACE(m_string);//TRACE2
    TRACE("%d",m_string.GetLength);//TRACE3
}其中strlast,strtemkeyname保存的是ini文件的section和key字符串,if里的语句居然能够执行,而且TRACE1有输出并且正确当然不为空,
但是TRACE2输出的却只是"abc",TRACE3输出的值是0.这是怎么回事?为空怎么TRACE1还有输出?

解决方案 »

  1.   

    一直搞不懂CString的GetBuffer和ReleaseBuffer怎么回事
      

  2.   

    使用了GetBuffer之后要用ReleaseBuffer,试试看。
      

  3.   

    用ReleaseBuffer
    http://www.codeguru.com/forum/showthread.php?t=299852
      

  4.   

    GetPrivateProfileString之后ReleaseBuffer。
      

  5.   

    谢谢指点,ReleaseBufferg果然有效
      

  6.   

    如果能读懂mfc源码水平就差不多了,那我从来没有参与过项目开发的人,靠不懈的看书和读代码,成长起来的,算不算水平差不多?
    今天有点忙,改天给你分析一下这个代码