【崩溃!】在文件内搜索

OryJuVog 2013-05-11 03:03:26
有一个二进制文件,用二进制方式成功打开了
ifstream file("xxx", ios::binary);
我想要在这个文件中找到这样一串数据
unsigned char data[] = {0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAB};
于是我就这样写
istreambuf_iterator<char> isbuf_iter(file);

istreambuf_iterator<char> res = search(isbuf_iter, istreambuf_iterator<char>(), data, data + sizeof (data)); // 崩溃了

请教
...全文
96 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
lm_whales 2013-05-21
  • 打赏
  • 举报
回复
ifstream file("xxx", ios::binary); unsigned long long u=0; unsigned long long code =0xAAAAAAAAAAAAAAAB; unsigned int c=0; unsigned long long count=0; file.read((char *) &u,sizeof(u)); do { if(u==code) {count++;} file.read(&c,1); u <<= 8; u |= c; } while(!file.eof());
OryJuVog 2013-05-12
  • 打赏
  • 举报
回复
OryJuVog 2013-05-12
  • 打赏
  • 举报
回复
buyong 2013-05-11
  • 打赏
  • 举报
回复
看开源项目madedit源代码
OryJuVog 2013-05-11
  • 打赏
  • 举报
回复
OryJuVog 2013-05-11
  • 打赏
  • 举报
回复
引用 3 楼 qq120848369 的回复:
好高级的标准库,内存足够大,建议malloc文件大的buffer一次读取内存,然后用memcmp在内存去比对吧。
我就是不想复制一次才这样做的,不然的话我用sstream就解决了
qq120848369 2013-05-11
  • 打赏
  • 举报
回复
好高级的标准库,内存足够大,建议malloc文件大的buffer一次读取内存,然后用memcmp在内存去比对吧。
OryJuVog 2013-05-11
  • 打赏
  • 举报
回复
OryJuVog 2013-05-11
  • 打赏
  • 举报
回复

64,637

社区成员

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

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