使用二维动态数组传输I/O时遇到问题。它编译好,但它不工作,因为我想。例如,我保存了数字1的“映射”,之后我将源代码中的数字更改为示例5并编译它,现在我加载数字1的“映射”,但是在循环中写入数据1时,输出是5不是1.请有人可以帮助修复代码?使用二维动态数组进行文件传输的二进制I/O
#include <iostream>
#include <fstream>
int main()
{
int ** array;
array = new int*[20];
for(int y=0;y<20;y++)
array[y] = new int[30];
for(int y=0;y < 20;y++)
for(int x=0;x < 30;x++)
array[y][x] = 1;
int volba = 1;
std::cin >> volba;
if(volba)
{
std::ifstream in("map",std::ios::in | std::ios::binary);
if(!in.is_open())
std::cout << "in map open error\n";
in.read((char*)&array, sizeof(array));
in.close();
std::cout << "loaded\n";
}
else
{
std::ofstream out("map",std::ios::out | std::ios::binary);
if(!out.is_open())
std::cout << "out map open error\n";
out.write((char*)&array, sizeof(array));
out.close();
std::cout << "saved\n";
}
std::cout << "array\n";
for(int y=0;y < 20;y++)
{
for(int x=0;x < 30;x++)
std::cout << array[y][x] << " ";
std::cout << std::endl;
}
for(int y=0;y<20;y++)
delete [] array[y];
delete [] array;
return 0;
}
那么你推荐我什么? – c0ntrol
@ user1295618 - 我用粗体表示了一个选项。你也可以使用一个静态的二维'数组[20] [30]'。 – moooeeeep
是的,但它不是好的编程方式,不是吗? :| – c0ntrol