使用 fstream 将其他文件保存在自己的数据存储中
Saving other files in a own data store with fstream
我当时正在开发一个小的Filestoresystem,应该存储
一些文件,如 .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
中。
我在每次打开和阅读后都进行了测试,如果打开等等,一切正常(没有出现错误代码)。
这部分看起来很奇怪:
file.write((char*)&Data,sizeof(char) * Data.size());
^^^^^^^^^^^^
Data.size()
是提示data是一个std::vector,所以&Data其实是错误的,应该是(char*)Data.data()
我当时正在开发一个小的Filestoresystem,应该存储
一些文件,如 .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
中。
我在每次打开和阅读后都进行了测试,如果打开等等,一切正常(没有出现错误代码)。
这部分看起来很奇怪:
file.write((char*)&Data,sizeof(char) * Data.size());
^^^^^^^^^^^^
Data.size()
是提示data是一个std::vector,所以&Data其实是错误的,应该是(char*)Data.data()