C++读写二进制文件
来源:互联网 发布:淘宝网点旺旺没反应 编辑:程序博客网 时间:2024/06/06 01:17
摘要:
使用C++操作文件,是研发过程中比较频繁的,因此进行必要的总结和封装还是十分有用的。今天在网上找到一篇,遂进行了部分的试验,以记之,备后用。
本文读写文件均使用文件流进行操作,主要使用的类是ifstream, ofstream, 使用时,请务必包含文件fstream。如下:
#include <fstream>
写二进制文件
写二进制文件应该使用ofstream类,文件的打开模式一定要是 binary,如果传入的不是 binary, 文件将以ASCII方式打开。
下面是示例代码,用于写入文件。
std::ofstream fout("a.dat", std::iOS::binary);
int nNum = 20;
std::string str("Hello, world");
fout.write((char*)&nNum, sizeof(int));
fout.write(str.c_str(), sizeof(char) * (str.size()));
fout.close();
而写文本文件则比较简单,如下:
std::ofstream fout("b.dat");
int nNum = 20;
std::string str("Hello, world");
fout << nNum << "," << str << std::endl;
fout.close();
读二进制文件
读取二进制文件可以使用ifstream 类来进行,文件的打开模式一定要是 binary,如果传入的不是 binary, 文件将以ASCII方式打开。
下面是示例代码:
std::ifstream fin("a.dat", std::ios::binary);
int nNum;
char szBuf[256] = {0};
fin.read((char*)&nNum, sizeof(int));
fin.read(szBuf, sizeof(char) * 256);
std::cout << "int = " << nNum << std::endl;
std::cout << "str = " << szBuf << std::endl;
fin.close();
而读取文本文件则比较简单:
std::ifstream fin("b.dat");
int nNum;
char szBuf[256] = {0};
fin >> nNum >> szBuf;
std::cout << "int = " << nNum << std::endl;
std::cout << "str = " << szBuf << std::endl;
fin.close();
文件的打开模式
文件操作时,如果不显示指定打开模式,文件流类将使用默认值。
在<fstream> 中定义了如下打开模式和文件属性:
ios::app // 从后面添加
ios::ate // 打开并找到文件尾
ios::binary // 二进制模式I/O(与文本模式相对)
ios::in // 只读打开
ios::out // 写打开
ios::trunc // 将文件截为 0 长度
可以使用位操作符 OR 组合这些标志,比如
ofstream logFile("log.dat", ios::binary | ios::app);
二进制文件的复制
这里我实现了一个二进制文件的复制操作,用于验证读写的正确性,示例代码如下:
bool copy_binary_file(const char * szDestFile, const char * szOrigFile){if (szDestFile == NULL){return false;}if (szOrigFile == NULL){return false;}bool bRet = true;std::ofstream fout(szDestFile, std::ios::binary | std::ios::app);std::ifstream fin(szOrigFile, std::ios::binary);if (fin.bad()){bRet = false;}else{while(!fin.eof()){char szBuf[256] = {0};fin.read(szBuf, sizeof(char) * 256);if (fout.bad()){bRet = false;break;}// fout.write(szBuf, sizeof(char) * 256);}}fin.close();fout.close();return bRet;}
- C语言二进制文件读写
- c读写二进制文件
- c/c++ 二进制文件读写
- C 读写二进制文件
- C/C++读写二进制文件
- C语言读写二进制文件
- [C++][IO]读写二进制文件
- [Matlab+C/C++] 读写二进制文件
- C语言实现二进制文件读写
- C语言实现二进制文件读写
- C语言实现二进制文件读写
- C语言实现二进制文件读写
- C语言实现二进制文件读写
- C语言实现二进制文件读写
- C语言实现二进制文件读写
- C语言实现二进制文件读写
- C语言实现二进制文件读写
- C语言中二进制文件读写
- 群消息这么复杂,怎么能做到不丢不重?
- redisTemplate的有序集合(zset)实例
- view-DrawerLayout 笔记
- RxJava简介
- 算法Day4-4个数之和
- C++读写二进制文件
- 重复执行粘帖-回车操作
- ImportError: No module named spiders
- 【备忘】老罗Android开发视频教程[共9大知识点] 下载
- java关键字含义
- linux 内核学习
- 高斯模糊工具类
- mongodb连接池
- c/c++程序编译连接过程