问题描述
我想实现将文件作为数组处理的想法。这是一段代码。下一次写入后,从流中返回相同的数据。如果我在写入数据后进行刷新,一切都会好起来的。告诉我为什么这里需要闪光灯,不用它可以吗?
std::fstream _fs;
_fs.open("temp.bin",ios::binary | ios::in | ios::out |ios::trunc);
std::vector<double> vec(ELEMENT_SIZE);
std::streamoff _current_putpos = 0;
std::streamoff _end_pos = 0;
size_t size = ELEMENT_SIZE * sizeof(double);
for (size_t i = 0; i < SIZE; i++)
{
for (size_t j = 0; j < 5; j++)
vec[j] = (double)i;
_fs.write((const char*)vec.data(),size);
_end_pos += ELEMENT_SIZE * sizeof(double);
_current_putpos = _end_pos;
}
for (size_t i = 0; i < SIZE; i++)
{
//get at,after read at index 2 return always {1,1,1....}
std::streamoff sizeoffset = static_cast<std::streamoff>(i * size);
std::streamoff seek = sizeoffset - _current_putpos;
if (seek != static_cast<std::streamoff>(0))
_fs.seekg(seek,std::ios::cur);
memset(vec.data(),-1,size);
_fs.read(reinterpret_cast<char*>(vec.data()),size);
_current_putpos = _current_putpos + seek + static_cast<std::streamoff>(size);
//set at
for (size_t j = 5; j < 10; j++)
vec[j] = (double)j;
sizeoffset = static_cast<std::streamoff>(i * size);
seek = sizeoffset - _current_putpos;
if (seek != static_cast<std::streamoff>(0))
_fs.seekp(seek,std::ios::cur);
_fs.write(reinterpret_cast<const char*>(vec.data()),size);
_current_putpos = _current_putpos + seek + static_cast<std::streamoff>(size);
}
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)