我在C中用 strlen(str) == 0 和 str[0] == '\0'.结果都不跟CString.IsEmpty()一样。

解决方案 »

  1.   

    void Release() throw()
    {
    ATLASSERT( nRefs != 0 ); if( _AtlInterlockedDecrement( &nRefs ) <= 0 )
    {
    pStringMgr->Free( this );
    }
    }
    MFC内部是将CString的长度,数据,指针全给赋初值了的
      

  2.   

    如果str初始化为了你用str[0] == '\0'可以判空,那没初始化呢?
      

  3.   

    这是代码,结果发现很多空串。
    pWndNext = new CWindowItem;
    TCHAR szTemp[MAX_PATH] = {0};
    GetWindowText( m_hWnd[i], pWndNext->m_szWindowName, MAX_PATH );
    if ( szTemp[0] != 0 )
    {
    GetWindowText( m_hWnd[i], pWndNext->m_szWindowName, MAX_PATH );
    }
      

  4.   

    你的代码中,szTemp[0]永远为0,if语句永远不会执行。不知道你要干什么。
      

  5.   

    写错了,应该是:
    pWndNext = new CWindowItem;
            TCHAR    szTemp[MAX_PATH] = {0};
            GetWindowText( m_hWnd[i], szTemp, MAX_PATH );
            if ( szTemp[0] != 0 )
            {
                GetWindowText( m_hWnd[i], pWndNext->m_szWindowName, MAX_PATH );
            }
      

  6.   

    C语言里面没有这个Empty的概念,如果你认为字符串的长度为0,就是Empty的话,那么可以使用 if( !*str )