MFC读取文件数据,添加信息到列表并保存到文件
2023-12-25 06:03:21
打开并读取文件信息
添加:
BOOL infoDlg::OnInitDialog()
{
CDialogEx::OnInitDialog();
// TODO: 在此添加额外的初始化
AfxMessageBox("欢迎查看学生信息");
SetList();
return TRUE; // return TRUE unless you set the focus to a control
// 异常: OCX 属性页应返回 FALSE
}
void infoDlg::SetList()
{
m_list.SetExtendedStyle(LVS_EX_FULLROWSELECT|LVS_EX_GRIDLINES);
m_list.InsertColumn(0,_T("学号"),0,100);//0为左对齐,2为居中对齐
m_list.InsertColumn(1,_T("姓名"),0,100);
m_list.InsertColumn(2,_T("性别"),0,100);
m_list.InsertColumn(3,_T("年龄"),2,100);
}
void infoDlg:: showData()//AllData
//{m_list.InsertItem(0,"22001");//第一个不用标注列
//m_list.SetItemText(0,1,"张宇");
//m_list.SetItemText(0,2,"男");
//m_list.SetItemText(0,3,"十九");
//m_list.InsertItem(1,"22002");//第一个不用标注列
//m_list.SetItemText(1,1,"王小慧");
//m_list.SetItemText(1,2,"女");
//m_list.SetItemText(1,3,"十八");
{for(int i=0;i<AllStr.size();i++)//AllStr[i]按行输出
{for(int j=0;j<AllStr[i].size();j++)//写入列表
{if(j==0)
m_list.InsertItem(i,AllStr[i][j].c_str());
else
m_list.SetItemText(i,j,AllStr[i][j].c_str());
}
}
}
//添加功能
void infoDlg::OnBnClickedButton5()
{CString strno,strname,strsex,strage;
GetDlgItem(IDC_EDIT1)->GetWindowText(strno);
GetDlgItem(IDC_EDIT2)->GetWindowText(strname);
// TODO: 在此添加控件通知处理程序代码
CButton*p=(CButton*)GetDlgItem(IDC_RADIO1);
if(p->GetCheck())
strsex="M";
else
strsex="W";
p=(CButton*)GetDlgItem(IDC_CHECK1);
if(p->GetCheck())
strage+="18";
p=(CButton*)GetDlgItem(IDC_CHECK2);
int row =m_list.GetItemCount();
if(p->GetCheck())
strage+="19";
m_list.InsertItem(row,strno);
m_list.SetItemText(row,1,strname);
m_list.SetItemText(row,2,strsex);
m_list.SetItemText(row,3,strage);
CString filename;
CFileDialog mydlg(true,NULL,NULL,NULL,"*.txt||");
if(mydlg.DoModal()==IDOK)
{
//AfxMessageBox("OK");
filename=mydlg.GetPathName();}
else
return;
string textlines,item;
fstream openfile(filename,ios::app);//打开文件流追加数据
if(openfile.is_open())//检查文件是否成功打开
{openfile<<strno<<_T(" ")<<strname<<_T(" ")<<strsex<<_T(" ")<<strage<<std::endl;//数据写入文件
openfile.close();//关闭文件
}
else
{AfxMessageBox("无法打开文件");}
}
//读取文件数据到列表
void infoDlg::OnBnClickedButton1()
{
// TODO: 在此添加控件通知处理程序代码
//string file_path="E:\\data.txt";
CString filename;
CFileDialog mydlg(true,NULL,NULL,NULL,"*.txt||");
if(mydlg.DoModal()==IDOK)
{
//AfxMessageBox("OK");
filename=mydlg.GetPathName();}
else
return;
string textlines,item;
fstream openfile(filename);
int count=m_list.GetItemCount();
while(getline(openfile,textlines))//读取每一行到textlines
{ stringstream items(textlines);
OneStr.clear();//清空
while(getline(items,item,' '))
{
//AfxMessageBox(item.c_str());
OneStr.push_back(item);//压入Onestr,读取文件到向量中
}
AllStr.push_back(OneStr);//压入AllStr
}
showData();
}
文章来源:https://blog.csdn.net/2303_76561497/article/details/135116187
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!