MFC读取文件数据,添加信息到列表并保存到文件

打开并读取文件信息

添加:

复制代码
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();
}
相关推荐
沉默-_-2 分钟前
力扣hot100滑动窗口(C++)
数据结构·c++·学习·算法·滑动窗口
斐夷所非1 小时前
C++ 继承、多态与类型转换 | 函数重载 / 隐藏 / 覆盖实现与基派生类指针转换
c++
gfdhy1 小时前
【C++实战】多态版商品库存管理系统:从设计到实现,吃透面向对象核心
开发语言·数据库·c++·microsoft·毕业设计·毕设
清酒难咽2 小时前
算法案例之分治法
c++·经验分享·算法
小屁猪qAq2 小时前
强符号和弱符号及应用场景
c++·弱符号·链接·编译
头发还没掉光光2 小时前
HTTP协议从基础到实战全解析
linux·服务器·网络·c++·网络协议·http
jojo_zjx3 小时前
GESP 24年12月2级 数位和
c++
自由的好好干活3 小时前
PCI9x5x驱动移植支持PCI9054在win7下使用3
c++·驱动开发
WBluuue5 小时前
数据结构与算法:dp优化——优化尝试和状态设计
c++·算法·leetcode·动态规划
睡不醒的kun5 小时前
定长滑动窗口-基础篇(2)
数据结构·c++·算法·leetcode·职场和发展·滑动窗口·定长滑动窗口