正文

第十四课:文件和注册表读写2007-09-25 15:49:00

【评论】 【打印】 【字体: 】 本文链接:http://blog.pfan.cn/lym51/29659.html

分享到:

第十四课:文件和注册表读写 一、文件操作: 1.  C的方式: FILE *p; p=fopen("c:\\1.txt","w"); fwrite("abc",1,4,p); fclose(p); 2.  C++的方式: ofstream f("c:\\1.txt"); f.write("hello",5); 3.  MFC的方式: I.                 写文件: CFile f("c:\\1.txt",CFile::modeWrite|CFile::modeCreate); f.Write("hello",5); a.几个标志的作用:   CFile::modeCreate:没有指定的文件就产生一个新文件,有就打开该文件,并将它裁剪到0;   CFile::modeNoTruncate :打开文件时不裁剪到0; b.写数据到文件末尾: CFile f("c:\\1.txt",CFile::modeWrite|CFile::modeCreate| CFile::modeNoTruncate);                     f.SeekToEnd(); f.Write("hello",5); II.              读文件: CFile f("c:\\1.txt",CFile::modeRead); char buf[10]; memset(buf,0,10); f.read(buf,5); MessageBox(buf); III.          文件对话框:   CFileDialog dlg(false);          //生成保存对话框     dlg.m_ofn.lpstrFilter="abc文件(*.abc)\0*.abc\0文本\0*.txt\0all file\0*.*\0\0";                         //设置对话框的过滤器     dlg.m_ofn.lpstrTitle="保存";  //修改对话框的标题     dlg.m_ofn.lpstrDefExt="txt";  //设置对话框的默认扩展名     if(IDOK==dlg.DoModal())     {         ofstream f(dlg.GetPathName()); //得到用户选择的文件的全路径名         f.write(aaa",3);     } 4.  文本文件和二进制文件的区别: 文件文件是一种特殊的二进制文件,当它遇到回车键10时,写入文件时会自动地在它的前面加一个13,而读出文件时遇到13 10 的组合时,又把它还原到10。而二进制文件就是把数据原封不动的写入文件,原封不动的再读取出来,没有文本文件的这种转换操作。 下面的代码演示了之间的这种区别:   写入文件时:     ofstream f("c:\\1.txt");      char buf[3];      buf[0]='a';      buf[1]='\n';      buf[2]='b';      f.write(buf,3); 读出文件时: ifstream f("c:\\1.txt"); f.setmode(filebuf::binary); char buf[5]; memset(buf,0,5); f.read(buf,5); CString str; str.Format("%d,%d,%d,%d",buf[0],buf[1],buf[2],buf[3]); MessageBox(str);     在写入文件时不指定格式,文件将按文本格式存储,此时读出文件时指定二进制格式,读出的数据如下图:                         如果注释f.setmode(filebuf::binary);语句,文件将按文本文件读出,如下图: 二、注册表的操作 1.  读写win.ini文件: a.写: WriteProfileString("haha","test","123");     b.读:             char buf[5];             GetProfileString("haha","test","000",buf,5);         C.实现一个简单的计数器:                 char buf[5];                 int x=GetProfileInt("haha","test",0);                 sprintf(buf,"%d",x+1);                 WriteProfileString("haha","test",buf); 2.  读写注册表: a.使用旧函数: 在CwinApp中旧函数数据将写到注册表中,在InitInstance()中加入代码:                 SetRegistryKey(_T("http://www.it315.org"));        int x =GetProfileInt("It315","count",0);        if(x>5)            return false;     WriteProfileInt("It315","count",x+1); 数据将写到注册表的 HKEY_CURRENT_USER\Software\http://www.it315.org\FileOp\It315键下的count中。 b. 使用新函数在注册表任意位置读写:    写: RegCreateKey(HKEY_LOCAL_MACHINE,"software\\http://www.it315.org",&hKeyIt315); 读:     char *buf;     long len;     RegQueryValue(HKEY_LOCAL_MACHINE, "software\\http://www.it315.org\\It315\\abc",NULL,&len);     buf=new char[len];     RegQueryValue(HKEY_LOCAL_MACHINE, "software\\http://www.it315.org\\It315\\abc",buf,&len);     MessageBox(buf);

阅读(9679) | 评论(0)


版权声明:编程爱好者网站为此博客服务提供商,如本文牵涉到版权问题,编程爱好者网站不承担相关责任,如有版权问题请直接与本文作者联系解决。谢谢!

评论

暂无评论
您需要登录后才能评论,请 登录 或者 注册