将文件保存在值数组中 [英] Save the file in an array of values
本文介绍了将文件保存在值数组中的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
有一个用于创建数组和类的类,用于将此数组的值存储在文件中。它只保存地址,但我需要价值。我找不到我的错误
我的尝试:
There is a class for creating an array and class that stores the values of this array in the file. It saves only the address, but I need value. I can not find my mistake
What I have tried:
class Temp;
class Array
{
int*m_mas;
int m_size;
Temp*m_temp;
public:
Array(int size);
void create();
void show();
void setTemp(Temp*temp);
void save();
~Array();
};
Array::Array( int size):m_size(size),m_mas(new int[m_size])
{
}
void Array::create()
{
for (int i = 0; i < m_size; ++i)
m_mas[i] = rand() % 20;
}
void Array::show()
{
for (int i = 0; i < m_size; ++i)
cout << m_mas[i] << " ";
}
void Array::setTemp(Temp * temp)
{
m_temp = temp;
}
void Array::save()
{
m_temp->write("file.txt", m_mas, m_size);
}
Array::~Array()
{
}
class Temp
{
public:
Temp();
int write(const char*name, const void*Array, int size);
~Temp();
};
#include "Temp.h"
#include<iostream>
#include<fstream>
using namespace std;
Temp::Temp()
{
}
int Temp::write(const char * name, const void * Array, int size)
{
name = "file.txt";
ofstream fout;
fout.open(name, ios_base::out | ios_base::ate);
if (!fout.is_open()) {
cerr << "Error! File is not open\n";
return -1;
}
int*Arr = new int[size];
Array = Arr;
for (int i = 0; i < size; ++i) //something is wrong
{
fout << Arr[i]; // it is necessary that the value story goes
}
fout.close();
return Arr[size];
delete[]Arr;
}
Temp::~Temp()
{
}
auto main(int argc, char*argv[])->int
{
Array ob(8);
ob.create();
ob.show();
ob.save();
}
推荐答案
如果您仔细阅读了您的代码,请阅读:
if you read your code carefully you read:
int*Arr = new int[size];//you write that int array
Array = Arr; //that is a mismatch (and not needed) => see below
for (int i = 0; i < size; ++i)
{
fout << Arr[i]; // now you write the int from the Arr
}
那不行。一个可能更清洁的解决方案是:
That wont work. A possible much cleaner solution is:
int Temp::write(const char * name, const int * Array, int size) //typed interface
{
// your code
for (int i = 0; i < size; ++i) //something is wrong
{
fout << Array[i]; // write the input parameter
}
这篇关于将文件保存在值数组中的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文