注册 登录
编程论坛 VC++/MFC

vs2010mfc 文件操作

蓝色的blue 发布于 2015-03-11 10:55, 2833 次点击
void CfileView::OnFileWrite()
{
    // TODO: 在此添加命令处理程序代码
    CFile file(LPCTSTR("test.txt"),CFile::modeCreate|CFile::modeWrite);
    file.Write("hello",strlen("hello"));
    file.Close();

}

写了一个打开文件的函数,,,但程序运行后没有该文件,,,不知道为什么
10 回复
#2
天使梦魔2015-03-11 11:28
CFile file(L"test.txt",CFile::modeCreate|CFile::modeWrite);
#3
蓝色的blue2015-03-11 12:11
不行呀,,,
#4
蓝色的blue2015-03-11 12:13
ok了  请问这是为什么
#5
天使梦魔2015-03-11 13:41
LPCTSTR 不是必须的,vs08版本以上默认是宽字符。
加L宏仅仅是为了把cpp文本转换给核心编译器

也可以这样
CFile file(LPCTSTR(L"test.txt"),CFile::modeCreate|CFile::modeWrite);
#6
蓝色的blue2015-03-11 15:36
不加LPCTSTR编译器报错的
#7
蓝色的blue2015-03-11 15:54
void Cfile2View::On32772()//read file
{
    // TODO: 在此添加命令处理程序代码
    CFile file(L"test.txt",CFile::modeRead);
    char*pBuf;
    DWORD length=file.GetLength();
    pBuf=new char[length+1];
    pBuf[length]=0;
    file.Read(pBuf,length);
    file.Close();
    MessageBox(LPCTSTR(pBuf));
}
这个文件读取上次写入的文字 ,,,消息框显示的是一堆乱码  ,, 怎么回事呀? 大神
#8
天使梦魔2015-03-11 17:55
说了字符集问题啊,你要不是改下vs设置吧,可以改成acsii的


void Cfile2View::On32772()//read file
     {
     // TODO: 在此添加命令处理程序代码
    CFile file(L"test.txt",CFile::modeRead);
     char*pBuf;
     DWORD length=file.GetLength();
     pBuf=new char[length+1];
     pBuf[length]=0;
     file.Read(pBuf,length);
     file.Close();
     int nLen = MultiByteToWideChar( CP_ACP, MB_PRECOMPOSED, pBuf, -1, NULL, 0 );
     wchar_t* pResult = new wchar_t[nLen];
     MultiByteToWideChar( CP_ACP, MB_PRECOMPOSED, pBuf, -1, pResult, nLen );  

     MessageBox(pResult);
     }
#9
蓝色的blue2015-03-11 21:53
ok  多谢大神 ,,大神能不能给点学习MFC的方法与经验???万分感谢
#10
天使梦魔2015-03-11 22:03
这个问题和mfc没关系啊,mfc只是一个库,不要苛求追逐mfc了。
不过用一个库来入门到是不错,以前记得有vc知识库,现在不知道有没有了,那里很多代码技巧。
不过我是没看过,听口碑不错
#11
蓝色的blue2015-03-11 22:05
恩恩,,多谢了大神
1