想将一个文本文件的内容读入对话框中的edit控件中,使用了下面三种方法:
但得到的都是相同的效果,失败的效果,不知到底错在哪了?第一种:
      CFile rule;
if(rule.Open("d:\\rule_ch.txt",CFile::modeRead) == FALSE)
return FALSE;
CArchive ar( &rule,CArchive::load );
ar >> m_rule;

UpdateData(FALSE);
ar.Close();
rule.Close();第二种:
         CStdioFile rule;
if( rule.Open( "d:\\rule_ch.txt",CFile::modeRead ) )
rule.ReadString( m_rule );
else 
return FALSE;
UpdateData(FALSE); rule.Close();第三种:
         CFile rule;
if( rule.Open( "d:\\rule_ch.txt", CFile::modeRead) )
rule.Read( &m_rule, 102400 );
else
return FALSE;
UpdateData(FALSE);
rule.Close();以上三种方法都只能顺利读出手动往text中加入的文本,而对于通过copy past 的文本读出来之后就有问题,要么有乱码,要么只能读一行,要么两者兼有。这是为何呢?

解决方案 »

  1.   

    下面的语句应该是可行的;CFile rule;
    //你的m_rule是CString类型的吧;
    if( rule.Open( "d:\\rule_ch.txt", CFile::modeRead) )
    {
    long lLength = rule.GetLength();
    rule.Read( m_rule.GetBuffer(lLength), lLength);
    m_rule.ReleaseBuffer(-1);
    rule.Close(); UpdateData(FALSE);
    }
    else
    return FALSE;
      

  2.   

    第二种:可以啊你可以通过
    CString str;
     CStdioFile rule;
    if( rule.Open( "d:\\rule_ch.txt",CFile::modeRead ) )
    rule.ReadString(str);
    else 
    return FALSE;
             m_rule =str;
    UpdateData(FALSE); rule.Close();
    测试复制的文本也可以啊
      

  3.   

    问题解决了,谢谢  fengqinggao(风清高) 
    但还是不知道为何之前的方法都不可行呢?我都试了好多遍了
      

  4.   

    第一种方法,关于“>>”等操作符我从来没有用过,所以不知道,呵呵
    第三种应该是参数类型和读取字节数不对,用GetLength()函数则长度肯定不会错
      

  5.   

    呵呵,你挺有信心的啊,说不定就是类型的问题,因为字节数大点的确没有关系,那就肯定事类型的问题了,对CString取地址,能用来存储数据?当然,我也没有尝试过,如果你希望搞清楚,就自己好好研究,或者另外开贴吧,有些知道原因的人可能不愿意在这里跟贴了