gpt4 book ai didi

c++ - c++中使用构造函数读取文件

转载 作者:行者123 更新时间:2023-11-28 02:34:21 24 4
gpt4 key购买 nike

我正在尝试编写一个程序来打开一个文件并使用它来制作一个在我们的代码部分中称为“plansza”的表格我们必须定义一个构造函数

Plansza::Plansza(char * Nameoffile)

但是我们以后如何使用我们的文件名来实际打开它呢?在 int main() 中应该是这样的

Plansza plansza("text.txt")

但这行不通..

除此之外,我们还希望以后能够使用该表,例如更改一些数字或类似的东西。所以我们必须知道它在哪里。其中 0

我们的示例文件 text.txt 如下所示

 0......0
...0....
...0....
...0....
0......0

这是我们的代码..

class Plansza{
private:
int *ekran;
int szer;
int wys;
public:
Plansza();
Plansza(int m,int n);
Plansza(const Plansza &plansza);
~Plansza();
Plansza& operator=(const Plansza& plansza);
Plansza(char* NazwaPliku);
void Wyswietl();
int Szerokosc();
int Wysokosc();
void Set(int x,int y,int k);
int Get(int x,int y);
};

Plansza::Plansza(){
ekran=new int[12];
szer=4;
wys=3;
for (int i=0;i<szer*wys+1;i++)
ekran[i]=0;
}
Plansza::Plansza(const Plansza &plansza){
wys=plansza.wys;
szer=plansza.szer;
ekran=new int[wys*szer];
for (int i=0;i<wys*szer+1;++i)
ekran[i]=plansza.ekran[i];
}
Plansza::~Plansza(){
delete []ekran;
}
Plansza& Plansza::operator=(const Plansza& plansza){
if (&plansza==this)
return *this;
if (ekran != NULL)
delete []ekran;
szer=plansza.szer;
wys=plansza.wys;
ekran=new int[szer*wys];
for (int i=0; i<szer*wys+1; i++)
ekran[i]=plansza.ekran[i];
return *this;
}
Plansza::Plansza(int m,int n){
ekran=new int[m*n];
szer=n;
wys=m;
for (int i=0;i<m*n+1;i++)
ekran[i]=0;
}
Plansza::Plansza(char* NazwaPliku){
FILE * plik;
plik= fopen("Test.txt", "r");
fclose(plik);
};
void Plansza::Wyswietl(){
for (int i=1;i<szer*wys+1;i++)
{
if (i%(szer)==0){
if (ekran[i]==0)
cout<< "." <<"";
else
cout<< "X" <<"";
cout<< "\n" <<"";
}
else
{
if (ekran[i]==0)
cout<< "." <<"";
else
cout<< "X" <<"";
}
}
};
int Plansza::Szerokosc(){
return szer;
};
int Plansza::Wysokosc(){
return wys;
};
void Plansza::Set(int x,int y,int k){
if ((x>wys) || (y>szer) || (x<1) || (y<1))
cout<<"Jestes poza tablica"<<"\n";
else
ekran[(x-1)*szer+y]=k;
};
int Plansza::Get(int x,int y){
if ((x<=wys) && (y<=szer) && (x>=1) && (y>=1))
return ekran[(x-1)*szer+y];
else
{
cout<<"Jestes poza tablica"<<"\n";
return 0;
}
};

最佳答案

您忽略了 NazwaPliku 参数,而是硬编码 "Test.txt"。相反:

Plansza::Plansza(char* NazwaPliku){
FILE * plik;
plik= fopen(NazwaPliku, "r");
fclose(plik);
};

如果以后要访问该文件,则需要将其存储在对象的一个​​字段中。您已经有了 ekranszerwys,所以您大概知道如何操作了。

(现在我想学习波兰语,这样我就可以在我的代码中使用如此迷人的标识符...:))

关于c++ - c++中使用构造函数读取文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28026634/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com