我在对话框窗口上设置了一个edit控件,想通过读取txt文本,将文本内的内容自动读到edit中去。我试着在一个txt文本中随便打了一些英文段落,并通过下面的代码能够成功读取文件。
CFile rule;
if(rule.Open("文件路径",CFile::modeRead) == FALSE) //文件路径已经设置好了
return FALSE;
CArchive ar( &rule,CArchive::load );
ar >> m_rule; ar.Close();
rule.Close(); UpdateData(FALSE);但是当我将文本中的内容换成从其他地方拷过来的中文文字时,edit 中只显示了其中的两个字,甚至还没到一行的尾部。这究竟是为什么呢?请多多执教,小弟在此先行谢过了!!!
CFile rule;
if(rule.Open("文件路径",CFile::modeRead) == FALSE) //文件路径已经设置好了
return FALSE;
CArchive ar( &rule,CArchive::load );
ar >> m_rule; ar.Close();
rule.Close(); UpdateData(FALSE);但是当我将文本中的内容换成从其他地方拷过来的中文文字时,edit 中只显示了其中的两个字,甚至还没到一行的尾部。这究竟是为什么呢?请多多执教,小弟在此先行谢过了!!!
自己写,不要使用MFC的类,MFC很多意外情况。
================================================== FILE *pSourFile; //指向源文件
CString sSourLine=""; //从源文件中取出的一行 pSourFile = fopen(sFileName,"rt");
if(pSourFile==NULL) {
AfxMessageBox("源文件打开失败!");
return false;
}
while(!feof(pSourFile)){
ReadLine(pSourFile, sSourLine);//读一行
}
}
//读取文件的一行
void CSetEx::ReadLine(FILE *pFile, CString &line)
{
line="";
char ch;
int pos=0;
while(!feof(pFile)){
//Read(&ch,1);
ch = fgetc(pFile);
if(ch=='\r'||ch=='\n')break;
line+=ch;
pos++;
if(line.Find("", 0))
{
ftell(pFile);
}
}
line.TrimRight('\r');
line.TrimRight('\n');
line.TrimRight('\r');
line.TrimRight(0xff); //过滤文件结束符
return;
}
CStdioFile file;
if(file.Open(_T(m_sAppPath+"\\text"),CFile::modeReadWrite))
{
CString sss;
DWORD o=0;
int ol=0;
while(file.ReadString(sss))
{
if(find.FindFile(m_sAppPath+"\\text"))
m_cbBkGround.AddString(sss);//sss即为一行
}
}
读出来的文本依然只有几个字,这到底是为何呢?
CFile rule;
if(rule.Open("d:\\robert\\lotto\\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:\\robert\\lotto\\rule_ch.txt",CFile::modeRead ) )
rule.ReadString( m_rule );
else
return FALSE;
UpdateData(FALSE); rule.Close();第三种:
CFile rule;
if( rule.Open( "d:\\robert\\lotto\\rule_ch.txt", CFile::modeRead) )
rule.Read( &m_rule, 102400 );
else
return FALSE;
UpdateData(FALSE);
rule.Close();以上三种方法都只能顺利读出手动往text中加入的文本,而对于通过copy past 的文本读出来之后就有问题,这是为何呢?