VC中关于文件的操作

本文介绍了在Windows环境下使用C++进行文件操作的方法,包括复制文本到粘贴板、从粘贴板读取文本、保存字符串到文件及读取拖拽到窗口的文件内容等实用功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最新写了一个程序,里头学到来了不少关于文件的操作,下面列举出来。

下面是关于字符串复制到粘贴板的操作:

void CDownlistBuilderDlg::OnBnClickedButtonCopy()
{
	CString m_str;
	m_str=_T("这就是要复制的文字");
	if(OpenClipboard())
	{
		HGLOBAL clipbuffer;
		char *buffer;
		EmptyClipboard();
		clipbuffer=GlobalAlloc(GMEM_DDESHARE,m_str.GetLength()+1);
		buffer=(char *)GlobalLock(clipbuffer);
		USES_CONVERSION;
		LPCSTR a=T2A(m_str.GetBuffer(m_str.GetLength()));
		m_str.ReleaseBuffer();
		strcpy(buffer,a);
		GlobalUnlock(clipbuffer);
		SetClipboardData(CF_TEXT,clipbuffer);
		CloseClipboard();
	}
}


下面是关于粘贴板复制到字符串的操作:

void CDownlistBuilderDlg::OnBnClickedButtonPaste()
{
	CString m_str;
	m_str=_T("");
	char *buffer=NULL;
	CString fromClipboard;
	if(OpenClipboard())
	{
		HANDLE hData=GetClipboardData(CF_TEXT);
		char *buffer=(char*)GlobalLock(hData);
		fromClipboard=buffer;
		m_str=m_str+fromClipboard;
		GlobalUnlock(hData);
		CloseClipboard();
	}
}


下面是关于文件保存的操作:

void CDownlistBuilderDlg::OnBnClickedButtonSave()
{
	CFileDialog *lpszOpenFile;//定义一个CfileDialog对象
	CString m_str;
	CString str;
	m_str=_T("这是保存在文件里的字符串");
	str=_T("");
	str.Format(_T("%ld"),time(NULL));//默认的文件名
	lpszOpenFile = new CFileDialog(FALSE,_T(""),str,OFN_FILEMUSTEXIST |OFN_HIDEREADONLY,_T("文件类型1(*.type1)|*.type1|文件类型2(*.type2)|*.type2||"));//生成一个对话框
	if(lpszOpenFile->DoModal()==IDOK)//假如点击对话框确定按钮
	{
		CString path;
		path=lpszOpenFile->GetPathName();//得到打开文件的路径
		///////////////////////////////////////////////////////
		CStdioFile File;
		File.Open(path,CFile::modeCreate|CFile::modeReadWrite);
		File.WriteString(m_str);
		File.Close();
		//这一部分是文件保存,将字符串m_str保存在path确定的文件中
		///////////////////////////////////////////////////////
	}
	delete lpszOpenFile;//释放分配的对话框
}


下面是关于读取拖拽文件内容的操作:

void CDownlistBuilderDlg::OnDropFiles(HDROP hDropInfo)
{
	CString m_str;
	m_str=_T("");
	CString str;
	str=_T("");
	CString filename,filetype;
	TCHAR filePath[MAX_PATH]={0};
	DragQueryFile(hDropInfo,0,filePath, MAX_PATH-1);
	filename=filePath;
	//filetype=filePath;
	//filename=filename.Right(filename.GetLength()-filename.ReverseFind('\\')-1);
	//得到文件名(带扩展名),如果需要去掉扩展名,继续处理即可
	//filetype=filetype.Right(filename.GetLength()-filename.ReverseFind('.')-1);
	//得到扩展名
	//filename=filename.Left(filename.GetLength()-filetype.GetLength());
	//得到文件名(不带扩展名)
	/////////////////////////////////////////////
	CStdioFile File;
	File.Open(filePath,CFile::modeRead);
	while(File.ReadString(str))
	{
		m_str=m_str+str+_T("\r\n");	
	}
	File.Close();
	//这一部分是读取文件内容到字符串m_str中
	/////////////////////////////////////////////
	DragFinish(hDropInfo);//释放拖放占用内存,必须!
	CDialogEx::OnDropFiles(hDropInfo);
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值