各位高手大家好,小弟这几天弄了一个对文档,想将目录下某一个文件以二进制打开再将其内容以16进制写入另一个文件。但是在目录下新建的文件用文档打不开。小弟检查了语法,没有错误。请大家帮忙看下问题出在哪里。我用的是vs2010.
我是如此操作的,先在view的头文件中加入#include<iostream>和#include<fstream> using namespace std;
然后建立鼠标左键点击事件响应函数,并在其中加入代码如下:
void C工程训练216测试View::OnLButtonDown(UINT nFlags, CPoint point)
{
// TODO: 在此添加消息处理程序代码和/或调用默认值
//建立打开对话框
CFileDialog fileDlg(TRUE);
//设置默认的打开方式
fileDlg.m_ofn.lpstrFilter=_T("Text Files(*.txt)\0*.txt\0All Files(*.*)\0*.*\0\0");
//如果选择确定则显示文本内容
if(IDOK==fileDlg.DoModal())
{
        int i;
        CFile file1(_T("2.txt"),CFile::modeRead | CFile::typeBinary);
fstream file2;
      char *buf;
DWORD fileLen;//用来存放内容长度
fileLen=file1.GetLength();//获取文本内容长度
buf=new char[fileLen+1];//声明一个新空间存放数据
buf[fileLen]=0;//设置文本结束
//读文件内容到pBuf开始的空间中
file1.Read(buf,fileLen);
int  c[100];
for(i=0;i<fileLen;i++)
{
c[i]=*(buf+i);
}
file1.Close();
        file2.open(_T("16.txt"),ios::binary | ios::out,0);
    //将读入的内容按十六进制格式化后输出到16.txt中
for(i=0;i<fileLen;i++)
{
file2<<hex<<c[i] <<"H ";
}
        file2.close();
//设置文件打开的方式
CFile file(_T("16.txt"),CFile::modeRead);
//定义一个指针用来存放文本内容
char *pBuf;
DWORD dwFileLen;//用来存放内容长度
dwFileLen=file.GetLength();//获取文本内容长度
//声明一个新空间存放数据
pBuf=new char[dwFileLen+1];
pBuf[dwFileLen]=0;//设置文本结束
//读文件内容到pBuf开始的空间中
file.Read(pBuf,dwFileLen);
file.Close();//文件关闭
CString string;
string.Format(_T("%s"),pBuf);
MessageBox(string);//将内容输出
}}
然后语法没问题,目录下新建一个名为2的txt,能看见。就是打不开!