编辑框设置了一个成员变量,要循环给该变量赋值,使编辑框显示所有的数值,而结果只显示了最后一个数据,该怎么处理

编辑框设置了一个成员变量,要循环给该变量赋值,使编辑框显示所有的数值,而结果只显示了最后一个数据
本帖最后由 Grubby_wivi 于 2014-08-26 20:43:11 编辑
问题描述:
首先有一个TXT文档:1.txt,内容如下(几行数据)
2 3 5
6 7 8
10 34 2
(每一行都有固定的几个数据,中间是空格,有多行)

目的:设置一个BUTTON,和一个EDITTEXT,并给EDITTEXT设置一个成员变量:m_data;使用vector读取每一个数据,并把所有的数据,循环赋值给m_data,使数据全部显示在文本框里:

以下是代码:

void Cmydlg::OnBUTRead() 
{
ifstream ifile("F:\\1.txt"); // 打开文件1.txt
vector<int> ivec; 
int s;
while (ifile >> s) // 从打开的文件读取
ivec.push_back(s); // 将每次读取的数存向量
for (vector<int>::size_type ix=0;ix!=ivec.size();++ix)
{
m_data=ivec[ix];     // 循环读取vector中的没一个数据,并赋值给m_data;
UpdateData(FALSE);
}
       ifile.close(); // 关闭文件
}


出现问题:在每一次m_data=ivec[ix]循环赋值之后,显示的都是 1.txt中的最后一个数据,我想要的事能把所有的数据都显示在文本框中。


谢谢 各位的帮忙!!

能指出问题所在,感激不尽!!
------解决方案--------------------
那你应该以追加的方式将数据追加到编辑框中,编辑框可以不用关联数值类型的变量,比如CString,int等等。
每次得到数据以后,格式化成字符串,然后调用
CEdit::SetSel(-1, -1);CEdit::ReplaceSel(strText);
------解决方案--------------------
关联控件CString类型变量m_strText;

CString strTemp="";
 for (vector<int>::size_type ix=0;ix!=ivec.size();++ix)
  {
            m_strText.Format("%s %d"),strTemp,ivec[ix];
           strTemp = m_strText;
            UpdateData(FALSE);
     }


------解决方案--------------------
编辑框设置了一个成员变量,要循环给该变量赋值,使编辑框显示所有的数值,而结果只显示了最后一个数据,该怎么处理
void CTestReadStringDlg::OnReadFile() 
{
CStdioFile file;
BOOL bOpen = file.Open("D:\\dat.txt", CFile::modeRead);
if(!bOpen) 
return;
CString lpszTemp;
while(file.ReadString(lpszTemp))
{
m_string += lpszTemp;
m_string += " ";
}
UpdateData(FALSE);
        file.Close();
}

关联为CString,然后一次读取每一行,追加到CString末尾,读完文件再显示数据,你上面的代码是每次UpdateData(FALSE)把前一个显示覆盖掉了