【问题标题】:Saving other files in a own data store with fstream使用 fstream 将其他文件保存在自己的数据存储中
【发布时间】:2015-09-08 20:12:57
【问题描述】:

我当时正在开发一个小型文件存储系统,它应该存储 一些文件,如.png´s 等等。 , 所以我成功地从char向量中读取了.png的字节,向量的大小与图片大小相同(应该没问题)。 然后,我想将字节保存在另一个 .png 中。

其实我创建文件成功了,但是文件完全是空的。

我猜这是最重要的代码:

void storedFile::saveData(char Path[]){

std::fstream file;
file.open(Path,std::ios::trunc|std::ios::out|std::ios::binary);
if(!file.is_open())
    std::cout << "Couldn´t open saved File (In Func saveData())" << std::endl;
file.write((char*)&Data,sizeof(char) * Data.size());
file.close();}

我认为我做得对,但它不起作用。

同样,.png 的字节存储在Data 中。 我在每次打开和阅读后测试,如果打开等等,一切正常(没有出现错误代码)。

【问题讨论】:

  • 我们不知道Data 是什么,也不知道为什么std::fstream::write() 会知道如何处理它。
  • 我在这里没有发现任何问题,也许您可​​以在声明 Data 的位置添加行并打印 file.write 和 file.close 的结果会很有趣。
  • 我们怎么知道 Data.size() > 0?数据到底是什么?

标签: c++ file fstream


【解决方案1】:

这部分看起来很奇怪:

file.write((char*)&Data,sizeof(char) * Data.size());
           ^^^^^^^^^^^^

Data.size()是暗示data是std::vector,所以&Data其实是错的,应该是(char*)Data.data()

【讨论】:

  • 它的向量数据;我明天试试,谢谢你的快速回复!
  • 这行得通!我的 .png 文件现在可以再次正确保存,我什至可以在资源管理器中打开它。再次感谢您对我的问题的快速回复,请原谅我的英语语言能力差:)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-12-23
  • 1970-01-01
  • 1970-01-01
  • 2018-08-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多