MFC中文本文件内容写入和读出的操作

咱们今天以通讯录管理系统做例子(*^▽^*),废话不多说直接开始

一、将数据从编辑框写入txt文件

第一件事就是在调试-调试属性-高级-字符集中换成多字节字符集使用哦

头文件中创建需要写入的对象类,

class person {
public:

    char name[5];//名字
    char address[10];//地址
    char phonenum[10];//电话号码
    char youbian[10];//邮编
    char email[20];//email
    char wxnum[10];//微信号
};

并创建编辑框设置控件变量

CString m_name;CString m_address;CString m_phonenum;CString m_youbian;CString m_email;CString m_wxnum;

基于CFile类,将编辑框中的内容赋给一个CString类变量,将这个变量写入txt文件中

CStdioFile myfile;
    CString record;
    UpdateData(true);//获得编辑框内容
    if (m_name == "" || m_address == "" || m_phonenum == "" || m_youbian == "" || m_email ==""|m_wxnum=="")
    {//判断编辑框内容是否为空
        MessageBox(_T("信息不能为空"), _T("添加错误"));
        return;
    }
    else
    {
        myfile.Open(_T("txl.txt"), CFile::modeCreate | CFile::modeNoTruncate | CFile::modeWrite | CFile::typeText);
        //文件名注意修改
        p.address == m_address;
        //剩余属性类似写  ,p.是类的属性,m_是编辑框控件变量;
        p.wxnum == m_wxnum;
        record = m_name + _T(" ") + m_address + _T(" ") + m_phonenum + _T(" ") + m_youbian+ _T(" ") + m_email+ _T(" ") +m_wxnum + _T("\n");//分割符为空格 注意换行
        MessageBox(record);//弹出写入的内容
        myfile.SeekToEnd();
        myfile.WriteString(record);
        k = MessageBox(_T("添加成功!"), _T("提醒"), MB_YESNO);
        if (k == 6)
        {
            m_name = "";
        //剩余编辑框控件变量类似赋空
            UpdateData(false);
        }
        myfile.Close();
    }

这样就可以通过编辑框向txt文件里写东西了哦~

二、将txt文件内容读出并显示到listctrl中;

增加listctrl,控件变量为m_List,并设置行首名字,我这里还设置了新风格哦~可以设置行首的代码放进初始化函数OnInitDialog()中哦

    LONG IStyle;
    IStyle = GetWindowLong(m_List.m_hWnd, GWL_STYLE);
    IStyle &= ~LVS_TYPEMASK;
    IStyle |= LVS_REPORT;
    SetWindowLong(m_List.m_hWnd, GWL_STYLE, IStyle);
    DWORD dwStyle = m_List.GetExtendedStyle();
    dwStyle |= LVS_EX_FULLROWSELECT;
    dwStyle |= LVS_EX_CHECKBOXES;//风格设置
    m_List.SetExtendedStyle(dwStyle);
    m_List.InsertColumn(0, _T("姓名"), LVCFMT_CENTER, 100);
    m_List.InsertColumn(1, _T("地址"), LVCFMT_CENTER, 250);
    m_List.InsertColumn(2, _T("电话号码"), LVCFMT_CENTER, 160);
    m_List.InsertColumn(3, _T("邮编"), LVCFMT_CENTER, 130);
    m_List.InsertColumn(4, _T("E-mail"), LVCFMT_CENTER, 250);
    m_List.InsertColumn(5, _T("微信号"), LVCFMT_CENTER, 200);

将txt文件里的内容基于CStdioFile类,while循环一句一句读,并利用分割函数,将文件中一个一个数据项写入vector容器,再利用SetItemTxt函数设置列表内容

首先是很重要的分割函数,系统不是自带的,我们需要自己在最前面添加哦~

别忘了加头文件~

#include <vector>
#include <string>
vector<string> split(const string& s, const string& seperator) {

    vector<string> result;
    typedef string::size_type string_size;
    string_size i = 0;

    while (i != s.size()) {
        int flag = 0;
        while (i != s.size() && flag == 0)
        {
            flag = 1;
            for (string_size x = 0; x < seperator.size(); ++x)
                if (s[i] == seperator[x])
                {
                    ++i;
                    flag = 0;
                    break;
                }
        }
        flag = 0;
        string_size j = i;
        while (j != s.size() && flag == 0)
        {
            for (string_size x = 0; x < seperator.size(); ++x)
                if (s[j] == seperator[x])
                {
                    flag = 1;
                    break;
                }
            if (flag == 0)
                ++j;
        }
        if (i != j) {
            result.push_back(s.substr(i, j - i));
            i = j;
        }
    }
    return result;

}

然后是在界面初始化函数中添加读出算法,直接上代码~

CString szLine = "";
    CStdioFile file;
    file.Open("txl.txt", CFile::modeRead);   
 int i = 0;
        while (file.ReadString(szLine))
    {
        //file.ReadString(szLine);
        string str = szLine.GetBuffer();
        vector<string> v = split(str, " ");//分隔符,此处以空格 作为分隔符
        m_List.InsertItem(i,"");
        m_List.SetItemText(i, 0, v[0].c_str());
        m_List.SetItemText(i, 1, v[1].c_str());
        m_List.SetItemText(i, 2, v[2].c_str());
        m_List.SetItemText(i, 3, v[3].c_str());
        m_List.SetItemText(i, 4, v[4].c_str());
        m_List.SetItemText(i, 5, v[5].c_str());
        i++;
    }
    file.Close();

最后展示一下界面效果图~

到这里就结束啦~感谢阅读~有什么问题联系作者哦~

  • 5
    点赞
  • 34
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
MFC(Microsoft Foundation Class)是一种基于Windows的C++类库,可以用于开发Windows应用程序。在MFC实现txt文件写入读取可以通过以下步骤完成: 1. 写入txt文件: 首先,需要创建一个CFile对象来处理文件的输入输出操作。使用CFile的Open方法打开一个已存在的txt文件或者使用Create方法创建一个新的txt文件。 例如: CFile file; if (file.Open(_T("example.txt"), CFile::modeCreate | CFile::modeWrite)) { CString strWrite = _T("这是一个示例文本。"); file.Write(strWrite, strWrite.GetLength() * sizeof(TCHAR)); file.Close(); } 在上述示例,我们首先创建了一个CFile对象,并通过Open方法打开一个名为"example.txt"的文件。然后,我们使用Write方法将字符串"这是一个示例文本。"写入文件,并通过Close方法关闭文件。 2. 读取txt文件: 同样,我们需要创建一个CFile对象处理文件的输入输出操作。使用CFile的Open方法打开一个已存在的txt文件。 例如: CFile file; if (file.Open(_T("example.txt"), CFile::modeRead)) { TCHAR szRead[100]; file.Read(szRead, 100 * sizeof(TCHAR)); CString strRead(szRead, file.GetLength()); file.Close(); AfxMessageBox(strRead); } 在上述示例,我们首先创建了一个CFile对象,并通过Open方法打开一个名为"example.txt"的文件。然后,我们使用Read方法将文件内容读取到字符数组szRead,并通过Close方法关闭文件。最后,我们将字符数组转换为CString类型,并使用AfxMessageBox显示读取到的文本内容。 通过以上步骤,我们可以在MFC应用程序实现txt文件写入读取操作

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值