我正在尝试从我创建的二进制文件中读取数据, 该过程似乎已经完成,但是每次方法都会返回到主 xutitility引发读取访问冲突。
我编写了一个程序来尝试使用std :: map对象保存和加载bianry文件,我四处乱窜,并想出了将密钥和值分别保存到文件中的方法,暂时是可以的。
saveFile函数如下所示:
void makeFile(string fileName) {
ofstream file(fileName, ios::binary);
string name;
int value;
if (file) {
for (map<string, int>::iterator it = testMap.begin(); it !=
testMap.end(); it++) {
name = it->first;
value = it->second;
file.write((char*)(&name), sizeof(string));
file.write((char*)(&value), sizeof(int));
}
file.close();
}
}
testMap是全局声明的地图 这个没有给我任何问题
但是当我运行如下所示的loadFunction时:
void loadFile(string fileName) {
string key;
int value;
int store;
ifstream file(fileName, ios::binary);
if (file) {
while (file){
file.read((char*)(&key), sizeof(string));
file.read((char*)(&value), sizeof(int));
other[key] = value; //other is an empty map
}
}
file.close();
}
每次函数返回时,我都会遇到读访问冲突, 在函数内部,一切似乎都可以正常进行,所有成员变量甚至都包含来自文件的正确数据,所以我对造成这种情况的原因不知所措。所以我想知道这是保存数据还是检索数据的方式?
我执行此操作的方式似乎完全是在我发现的所有代码段中执行的方式,因此我什至不知道要确切地进行更改。关于我在这里做错什么的任何指示?