读取文件的二进制文件

时间:2011-11-30 17:58:29

标签: c++ binary

我一直在谷歌上搜索,无法锁定我想要做的事情。我得到了关于阅读二进制文件的信息。但在这些链接中,人们提到标题和格式,这似乎与我所追求的相反。

结束目标:加密图片中的任何文件(假设图片对文件足够大)。

开始目标:将任何扩展名的任何文件读入c ++向量(或者其他任何东西 - 如果有什么优势,我可以提出建议),然后用不同的名称将同一个文件重写到硬盘上。之后,我想检查文件是否仍然有效/大小/是否相同。

所以我试图确保我有能力将文件吸入' A'一旦文件进入A'并且能够写一个文件。在我把A' A'的内容拼凑起来之前并将其粘贴成图像。

感谢您的推荐。

2 个答案:

答案 0 :(得分:2)

您要求引用名为 Steganography 的内容。我写了一篇关于它的研究论文。如果没有在此完整发布,Wikipedia有一个关于它的页面。

答案 1 :(得分:0)

有更好(更有效)的方法来复制文件。但是要回答您的具体问题:

#include <fstream>
#include <vector>

int main()
{
   std::ifstream in("input_file", std::ios::binary);

   auto beg = in.tellg();
   in.seekg(0, std::ios::end);
   auto end = in.tellg();

   auto sz = end - beg;

   std::vector<char> outbuf;

   if(0 != sz)
   {
      in.seekg(0, std::ios::beg);
      outbuf.resize(sz);

      in.read(&outbuf[0], outbuf.size());

      std::ofstream out("output_file", std::ios::binary);
      out.write(&outbuf[0], outbuf.size());
   }
}