编辑:显然,问题在读取函数中:我在十六进制编辑器中检查了数据。
02 00 00 00 00 01 00 00 00 00 00 00 00 00 00 00 00 00 00
因此,零被储存为零,不算为零。
因为当我使用正常的库存-内-宾档案功能时:
int a = 0;
file.write(reinterpret_cast<char*>(&a), sizeof(a));
它作为<条码><>/条码>版本或“日报”储存,这显然是储存的(因为其价值无效?)这样,当我称我的职能为零值时,它就读到其之后的价值(或者说是档案中的最后一点)。 因此,我怎么能够把零存放在 file子档案中?
EDIT:与读/正文过程有关的部分职能如下:
//Init program: creates a sector.bin for another program to read from.
#include<fstream>
using namespace std;
int main()
{
fstream file;
file.open("sector.bin", ios::out | ios::binary);
if(!file.is_open())
{
file.open("sector.bin", ios::out | ios::binary);
file.close();
file.open("sector.bin", ios::out | ios::binary);
if(!file.is_open())
{
return -1;
}
}
file.seekp(file.beg);
int a = 2;
int b = 1;
int c = 0;
file.write(reinterpret_cast<char*>(&a), sizeof(a));
file.write(reinterpret_cast<char*>(&b), sizeof(b));
file.write(reinterpret_cast<char*>(&c), sizeof(c));
file.close();
return 0;
}
//Read function: part of another program that intializes variables based off
//of sector.bin
void sector::Init(std::fstream& file)
{
int top_i = FileRead(file,0);
std::cout<<top_i<<std::endl;
for(int i = 0; i < top_i; i++)
{
accessLV[i] = FileRead(file,i+1);
std::cout<<accessLV[i]<<std::endl;
}
std::cin.ignore();
viral_data.add(new X1(5,5, X ));
viral_data.add(new X1(9,9, X ));
player.set(0,0, O );
return;
}
//the FileRead used in init
int FileRead(std::fstream& file, int pos)
{
int data;
file.seekg(file.beg + pos);
file.read(reinterpret_cast<char*>(&data), sizeof(data));
return data;
}
此外,使用<代码>部门的产出:Init如下:
2
1
1
我试图写进这本书的功用是
2
1
0
因此,0正读/写为1,或者没有书写,Init读到最后价值两倍。