想将一个文本文件的内容读入对话框中的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 的文本读出来之后就有问题,要么有乱码,要么只能读一行,要么两者兼有。这是为何呢?
但得到的都是相同的效果,失败的效果,不知到底错在哪了?第一种:
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 的文本读出来之后就有问题,要么有乱码,要么只能读一行,要么两者兼有。这是为何呢?
//你的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;
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();
测试复制的文本也可以啊
但还是不知道为何之前的方法都不可行呢?我都试了好多遍了
第三种应该是参数类型和读取字节数不对,用GetLength()函数则长度肯定不会错