基于MFC对话框程序实现文件的打开、读取、写入操作

这是在对话框程序的pointscloud622Dlg.cpp文件中,开头应该包含这些头文件

#include "stdafx.h"
#include<iostream> 
#include "pointscloud622.h"
#include "pointscloud622Dlg.h"
#include "afxdialogex.h"
#include<vector>
using namespace std;

文件路径只识别正斜杠比如_T("H:/out/ys.txt"),不能识别系统窗口使用的反斜杠比如_T("H:\out\ys.txt")哦!

下面直接看打开按钮的响应函数:

void Cpointscloud622Dlg::OnBnClickedButton1()//点击打开文件
{
    TCHAR szFilter[] = _T("点云文件(*.ply;*.pcd)||RBS_APP 文件 (.rbs_app)||文本文件(*.txt)||所有文件(*.*)||");//设置过滤器,双竖线结尾,单竖线隔开;

例如:有两个过滤规则,一个是图片文件:*.bmp或者*.jpg;另一个是所有文件:*.*。则过滤规则为:

                " 图片文件 |*.jpg;*.bmp | 所有文件 | *.* ||"

 
    CFileDialog fileDlg(TRUE, _T("txt"), NULL, 0, szFilter, this);   // 构造打开文件对话框,第一个参数为false表示构造另存为对话框  
    if (IDOK == fileDlg.DoModal())    // 显示打开文件对话框
    {
        SetDlgItemText(IDC_EDIT1, fileDlg.GetPathName());//将地址输入到对话框界面的第一个编辑框中
        CStdioFile file;//实例化一个文件对象用于读取信息
        file.Open(fileDlg.GetPathName(), CFile::modeReadWrite);//打开上面的路径,读到我们想要了解的那个文件
    
        CString temp;//用于存放每行读取的内容
        //const char *charTemp;//用于存放每行读取的内容,char格式
        CString status;//状态栏内容
        while (file.ReadString(temp))//下面是对一个具体的点云文件读取操作,以后写代码作为参考即可
        {
            if (temp.Left(14) == CString("element vertex"))//如果最左边的14个字符是element vertex则停下
            {
                //string strTemp(CW2A(temp.GetString()));//将CString转化为string
                //charTemp =strTemp.c_str();//将string转换为char *
                sscanf_s(temp, "element vertex %d", &m_NumPoints);//取出点数
            }
            if (temp.Left(12) == CString("element face"))//如果最左边的12个字符是element face则停下
            {
                //string strTemp(CW2A(temp.GetString()));//将CString转化为string
                //charTemp = strTemp.c_str();//将string转换为char *
                sscanf_s(temp, "element face %d", &m_NumFace);//取出面数
                break;//跳出            
            }
        }
        status.Format("本文件*有%d个顶点,%d个单元面", m_NumPoints, m_NumFace);//状态栏
        //下面开始写状态栏
        RECT m_Rect;
        GetClientRect(&m_Rect); //获取对话框的矩形区域
        m_Rect.top = m_Rect.bottom - 20; //设置状态栏的矩形区域
        m_StatBar->SetText(status, 0, 0);
        //SetDefaultNumbers();//设置初始值
        file.Close();
    }
}

基于MFC对话框程序实现文件的打开、读取、写入操作

基于MFC对话框程序实现文件的打开、读取、写入操作

基于MFC对话框程序实现文件的打开、读取、写入操作

//对于写入,思路是这样:首先拿到要写入的内容,存进一个CString类型的变量中;然后通过交互的方式拿到用户想要存取的位置和文件名;最后在指定路径创建文件并且将内容写入

//一、拿到要写入的内容,存进一个CString类型的变量中

CString outer="This is my first document\nHello world";

//二、通过交互的方式拿到用户想要存取的位置和文件名

TCHAR szFilter[] = _T("MEA 文件 (.mea)||文本文件(*.txt)|*.txt|所有文件(*.*)|*.*||");//设置该对话框的文件过滤器
    CFileDialog savefileDlg(FALSE, _T("txt"), strFileTitle, 0, szFilter, this);// 构造存储文件对话框,第三个参数是默认文件名  
savefileDlg.m_ofn.lpstrFilter=_T("MEA Files(*.mea)\0*.mea\0RBS Files(*.rbs_app)\0*.rbs_app\0Text Files(*.txt)\0*.txt\0ALL Files(*.*)\0*.*\0\0");

  if (IDOK == savefileDlg.DoModal())//打开保存对话框,通过与用户交互来拾取存储路径和文件名、后缀名
    {
        CString strFilePathSave = savefileDlg.GetPathName();//用于保存完整的存储路径,包括文件名、后缀名
       CString str_saveFileTitle = savefileDlg.GetFileName();//保存用户在对话框中输入的文件名和后缀名
    }
    else
    {
        return;
    }

// strFileTitle=str_saveFileTitle;

//三、在指定路径创建文件并且将内容写入

CStdioFile myoutfile;

myoutfile.Open(strFilePathSave, CFile::modeReadWrite | CFile::modeCreate | CFile::modeNoTruncate);//计算机内部打开上面的路径(如果在该路径下没找到现有文件则创建文件)

myoutfile.WriteString(outer);//开始写入上述
myoutfile.Close();