一个字符串中有两个以上的'\0'时,如果在CEdit中显示呢?
且这个字符串里有可能有任何值的不可见字符,这样的字符串我用连一个CString或LPCTSTR,LPTSTR也无法表示出来,再调用SetWindowText怎么能完整的显示出来呢?比如一个二进制的文件,我们用十六进制编辑器打开看时有可能里面存在许多不可见字符,里面也不乏零的存在,这样的东西我们可以用记事本打开看到的是乱码,但如果你用记事本的保存工能再保存了一次,那这个文件里的内容就可能被改变了,其实也是那里\0在做怪,这说明记事本里的容器的处理这些\0时也没有处理好,这个真的很难吗?

解决方案 »

  1.   

    GetDlgItem(IDC_EDIT1)->SetWindowText("\\0\\0");
    显示效果是\0\0
      

  2.   

    变成十六进制在显示不就vok
    了吗
      

  3.   

    回复人: laiyiling(【陌生人 V2.0】) ( ) 信誉:261  2004-10-05 14:32:00  得分: 0  
      
       GetDlgItem(IDC_EDIT1)->SetWindowText("\\0\\0");
    显示效果是\0\0
      
     
    这样的可以是可以,
    如果遇到  \\0\0\0就难看了
      

  4.   

    SetWindowText("abcd\0efgh\02345345\0")
    是这样的,你怎么显示,好象只能显出第一个\0前的内容吧
    并且就算这样可以显示出全部内容,那如果又把一个文件的内容显示出来呢,如此这般:
    CFile file;
    file.Open("c:\\a.exe", CFile::modeRead);
    UCHAR *pChar;
    DWORD dwLen;
    dwLen = File.GetLength();
    pChar = new UCHAR[dwLen];
      这时候的pChar里的内容如何显到到CEdit里呢,难道这样用:
      SetWindowText(pEdit, LPCTSTR(pChar));delete pChar;
      

  5.   

    SetWindowText("abcd\0efgh\02345345\0")
    是这样的,你怎么显示,好象只能显出第一个\0前的内容吧
    并且就算这样可以显示出全部内容,那如果又把一个文件的内容显示出来呢,如此这般:
    CFile file;
    file.Open("c:\\a.exe", CFile::modeRead);
    UCHAR *pChar;
    DWORD dwLen;
    dwLen = File.GetLength();
    pChar = new UCHAR[dwLen];
      这时候的pChar里的内容如何显到到CEdit里呢,难道这样用:
      SetWindowText(pEdit, LPCTSTR(pChar));
      这样用如果这个文件是文本文件,可能没有问题,但如果是个二进制文件,里面有许多的NULL那么这个内容肯定就不能显示完
    delete []pChar;
    file.Close();
      

  6.   

    我做了一下试验:
    当:
    CString t="00\0123450456";
    ::AfxGetApp()->GetMainWnd()->SetWindowText(t);
    输出:00 3450456
             CString t="00\012345\0456";
    ::AfxGetApp()->GetMainWnd()->SetWindowText(t);
    输出:00 345%6         CString t="000123450456";
    ::AfxGetApp()->GetMainWnd()->SetWindowText(t);
    输出:000123450456
         实际上这里一个关键问题是实数0和字符0的区分,以及字符串的截取。
    我们知道字符串是以"\0"定义为截至符,所以如果就应该注意到这一点就够了;当这个串中存在实数0说明它是数组就用uchar cs[m]=""来处理数组,如果是字串就可以用char* cs=""来处理。
      

  7.   

    你这个字符串"00\0123450456"中间的\0其实应该是\012也就是\x0c或0x0c这个不可见字符这与我的意图是不一样的