基于MFC保存和打开文件

  1. 在C语言中用FILE结构体来对文件进行操作,比如fprintf格式化写入文件
  2. 在C++中利用CStdioFile类,它是继承于CFile类的。
    void CTestDlgDlg::OnBnClickedSave()
    {
    	CStdioFile file;				//继承于CFile类
    	BOOL isOpen = FALSE;			//是否打开(否则为保存)  
    	CString defaultDir = L"";		//默认打开的文件路径  
    	CString fileName = L"";         //默认打开的文件名  
    	CString filter = L"文件 (*.txt; *.ppt; *.xls)|*.txt;*.ppt;*.xls||";   //文件过虑的类型  
    	CFileDialog openFileDlg(isOpen, defaultDir, fileName, OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT, filter, NULL);//利用CFileDialog类中构造函数对其参数进行初始化。
    	INT_PTR result = openFileDlg.DoModal();//当点击保存时,模态对话框跳出,程序继续执行。
    	CString filePath = defaultDir + "\\" + fileName;
    	CString str;
    	int *p = (int*)malloc(100 * sizeof(int));
    	for (int i = 0; i < 100; i++)
    	{
    		p[i] = i;
    	}
    	if (result == IDOK) {
    		filePath = openFileDlg.GetPathName();//得到文件的绝对路径
    		file.Open(filePath, CFile::modeCreate | CFile::modeWrite);	
    		for (int i = 0; i < 100; i++)
    		{
    			str.Format(_T("%d\n"),p[i]);
    			file.WriteString(str);
    		}
    		file.Flush();
    		file.Close();		
    	}	
    	CWnd::SetDlgItemTextW(IDC_EDIT_SRC, filePath);
    	//_T("")和L""两种写法。作用是让你的程序支持Unicode编码,
    	//因为Windows使用两种字符集ANSI和UNICODE,前者就是通常使用的单字节方式,但这种方式处理象中文这样的双字节字符不方便,容易出现半个汉字的情况。而后者是双字节方式,方便处理双字节字符。
    	//_L不管你是以什么方式编译,一律以UNICODE方式保存。
    }
    

你可能感兴趣的:(C++语法)