如何C++ 用fstream读文件 写入byte数组中?

hjxmzy 2011-05-19 09:57:36
以前用C#做过
FileStream fs = File.OpenRead(filename);
byte[] buffer = new byte[fs.Length];
fs.Read(buffer , 0, buffer .Length);

这样就能实现了,用C++的具体代码哪位能帮忙写一下,谢谢各位。
...全文
2357 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
downmooner 2011-05-19
  • 打赏
  • 举报
回复
string filename;
ifstream infile;
infile.open(filename.c_str(),ios::binary)
if (!infile)
{
return;
}
infile.seekg( 0 , ios::end );
unsigned long len = infile.tellg();
BYTE buffer = new BYTE[len];
infile.seekg(0,ios::beg);
infile.read(buffer,len);
//还有些检查流状态,上一次操作状态函数
infile.close();
delete [] buffer; //c++要自己管理申请的内存
KID_coder 2011-05-19
  • 打赏
  • 举报
回复

#include <iostream>
#include <fstream>
using namespace std;


int main()
{
fstream file;
//打开文件
// ios::app:   以追加的方式打开文件
// ios::ate:   文件打开后定位到文件尾,ios:app就包含有此属性
// ios::binary: 以二进制方式打开文件,缺省的方式是文本方式。两种方式的区别见前文
// ios::in:    文件以输入方式打开(文件数据输入到内存)
// ios::out:   文件以输出方式打开(内存数据输出到文件)
// ios::nocreate: 不建立文件,所以文件不存在时打开失败
// ios::noreplace:不覆盖文件,所以打开文件时如果文件存在失败
// ios::trunc:  如果文件存在,把文件长度设为0
file.open("C:\\out.txt", ios::binary|ios::in);

if ( !file.is_open() )
{
cout << "fail" << endl;
return 0;
}
char buffer[1024]; //存储读取字符串
file.read(buffer, 1024);
cout << buffer << endl;
return 0;
}

文件定位
  和C的文件操作方式不同的是,C++ I/O系统管理两个与一个文件相联系的指针。一个是读指针,它说明输入操作在文件中的位置;另一个是写指针,它下次写操作的位置。每次执行输入或输出时,相应的指针自动变化。所以,C++的文件定位分为读位置和写位置的定位,对应的成员函数是seekg()和seekp()。seekg()是设置读位置,seekp是设置写位置。它们最通用的形式如下:

    istream &seekg(streamoff offset,seek_dir origin);
    ostream &seekp(streamoff offset,seek_dir origin);

  streamoff定义于 iostream.h 中,定义有偏移量 offset 所能取得的最大值,seek_dir 表示移动的基准位置,是一个有以下值的枚举:

ios::beg:  文件开头
ios::cur:  文件当前位置
ios::end:  文件结尾
ryfdizuo 2011-05-19
  • 打赏
  • 举报
回复

#include <iostream>
#include <fstream>
#include <vector>
#include <string>
#include <algorithm>

using namespace std;

int main() {
ifstream inFile("test.txt");
vector<unsigned char> bvec;
copy(istream_iterator<string>(inFile), istream_iterator<string>(), back_inserter(bvec));
copy(bvec.begin(), bvec.end(), ostream_iterator<string>(cout,"\n"));

inFile.close();

return 0;
}

64,639

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧