编辑框设置了一个成员变量,要循环给该变量赋值,使编辑框显示所有的数值,而结果只显示了最后一个数据 本帖最后由 Grubby_wivi 于 2014-08-26 20:43:11 编辑 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 那你应该以追加的方式将数据追加到编辑框中,编辑框可以不用关联数值类型的变量,比如CString,int等等。每次得到数据以后,格式化成字符串,然后调用CEdit::SetSel(-1, -1);CEdit::ReplaceSel(strText); 首先,谢谢你的回答!我把文本框的成员变量m_data数据类型设置为int类。其次“格式化字符串”什么意思,我是新手,刚搜索了这句话的意思,还是不太明白。 关联控件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); } 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)把前一个显示覆盖掉了 首先,谢谢你的帮助!用你的方法,问题解决了。但是我还在考虑 用vectort容器怎么实现这样的功能。谢谢! 首先,谢谢你的帮助!用你的方法,问题解决了。但是我还在考虑 用vectort容器怎么实现这样的功能。谢谢!vector也可,不外乎就是存放读取字符串的容器不一样,我用的CString来存放临时去读的串,你换成vector就行了,不过ifstream流的读取会麻烦些:void CTestReadStringDlg::OnReadFile() { std::vector<int> vec; int num; ifstream ifs("D:\\dat.txt"); while (ifs >> num) { vec.push_back(num); } std::vector<int>::iterator iter; std::string temp; for(iter = vec.begin(); iter != vec.end(); iter++) { char buf[10] = {0}; sprintf(buf, "%d ", *iter); temp += buf; } m_string = CString(temp.c_str()); UpdateData(FALSE);} m_data += ivec[ix]; // 循环读取vector中的没一个数据,并赋值给m_data;}UpdateData(FALSE); 首先,谢谢你的帮助!用你的方法,问题解决了。但是我还在考虑 用vectort容器怎么实现这样的功能。谢谢!vector也可,不外乎就是存放读取字符串的容器不一样,我用的CString来存放临时去读的串,你换成vector就行了,不过ifstream流的读取会麻烦些:void CTestReadStringDlg::OnReadFile() { std::vector<int> vec; int num; ifstream ifs("D:\\dat.txt"); while (ifs >> num) { vec.push_back(num); } std::vector<int>::iterator iter; std::string temp; for(iter = vec.begin(); iter != vec.end(); iter++) { char buf[10] = {0}; sprintf(buf, "%d ", *iter); temp += buf; } m_string = CString(temp.c_str()); UpdateData(FALSE);}多谢!学习了~~~ 版本自动更新方法 一个有趣的线程问题 msdn2003和msdn2001有什么区别? 如此问题竟然无人理睬,这个论坛真的要完了??? 在2000下编写的ATL服务程序NT4.0下不能正常运行! 第一次遇到这样的问题(100分) 怎么重写CDocument::OnSaveDocument() 函数? DBTYPE_DECIMAL类型的数据怎么读出??紧急 抢分啊~~~~~,关于CSocket的简单奇怪的问题!! 如何改变系统设置中的颜色(如16位改为256色)? 我这二个类定义有什么问题吗?总是破坏内存 数学形态学的哪种运算可以连接边缘
每次得到数据以后,格式化成字符串,然后调用
CEdit::SetSel(-1, -1);CEdit::ReplaceSel(strText);
首先,谢谢你的回答!
我把文本框的成员变量m_data数据类型设置为int类。
其次“格式化字符串”什么意思,我是新手,刚搜索了这句话的意思,还是不太明白。
for (vector<int>::size_type ix=0;ix!=ivec.size();++ix)
{
m_strText.Format("%s %d"),strTemp,ivec[ix];
strTemp = m_strText;
UpdateData(FALSE);
}
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)把前一个显示覆盖掉了
首先,谢谢你的帮助!用你的方法,问题解决了。但是我还在考虑 用vectort容器怎么实现这样的功能。
谢谢!
首先,谢谢你的帮助!用你的方法,问题解决了。但是我还在考虑 用vectort容器怎么实现这样的功能。
谢谢!
vector也可,不外乎就是存放读取字符串的容器不一样,我用的CString来存放临时去读的串,你换成vector就行了,不过ifstream流的读取会麻烦些:void CTestReadStringDlg::OnReadFile()
{
std::vector<int> vec;
int num;
ifstream ifs("D:\\dat.txt");
while (ifs >> num)
{
vec.push_back(num);
}
std::vector<int>::iterator iter;
std::string temp;
for(iter = vec.begin(); iter != vec.end(); iter++)
{
char buf[10] = {0};
sprintf(buf, "%d ", *iter);
temp += buf;
}
m_string = CString(temp.c_str());
UpdateData(FALSE);
}
}
UpdateData(FALSE);
首先,谢谢你的帮助!用你的方法,问题解决了。但是我还在考虑 用vectort容器怎么实现这样的功能。
谢谢!
vector也可,不外乎就是存放读取字符串的容器不一样,我用的CString来存放临时去读的串,你换成vector就行了,不过ifstream流的读取会麻烦些:void CTestReadStringDlg::OnReadFile()
{
std::vector<int> vec;
int num;
ifstream ifs("D:\\dat.txt");
while (ifs >> num)
{
vec.push_back(num);
}
std::vector<int>::iterator iter;
std::string temp;
for(iter = vec.begin(); iter != vec.end(); iter++)
{
char buf[10] = {0};
sprintf(buf, "%d ", *iter);
temp += buf;
}
m_string = CString(temp.c_str());
UpdateData(FALSE);
}
多谢!学习了~~~