我不明白为什么我的程序打印出奇怪的数字,我相信它是地址编号....我试图从文件中读取数据,然后将它们存储在类实例中....文件在一行中有id,x,y,z ....它有10行,因此我必须创建10个类实例..对你的帮助很高兴... ^^
class planet
{
public:
int id_planet;
float x,y,z;
};
void report_planet_properties(planet& P)
{
cout<<"Planet's ID: "<<P.id_planet<<endl;
cout<<"Planet's coordinates (x,y,z): ("<<P.x<<","<<P.y<<","<<P.z<<")"<<endl;
}
planet* generate_planet(ifstream& fin)
{
planet* p = new planet;
fin >> (*p).id_planet;
fin >> (*p).x;
fin >> (*p).y;
fin >> (*p).z;
return (p);
}
int main()
{
planet* the_planets[10];
int i=0;
ifstream f_inn ("route.txt");
if (f_inn.is_open())
{
f_inn >> i;
for(int j=0;j<i;j++)
{
the_planets[j]=generate_planet(f_inn);
report_planet_properties(*the_planets[i]);
delete the_planets[j];
}
f_inn.close();
}
else cout << "Unable to open file";
}
答案 0 :(得分:1)
我不了解您代码的某些部分(例如,为什么要在generate_planet中创建新的planet实例),但我不是一位经验丰富的C ++程序员。但是,我修改了你的代码并发现了这个代码:
#include <iostream>
#include <fstream>
using namespace std;
class planet
{
private:
int id_planet;
float x,y,z;
public:
void generate_planet(ifstream& fin);
void report_planet_properties();
};
void planet::report_planet_properties() {
cout << "\nPlanet's ID: " << id_planet << endl;
cout << "\nPlanet's coordinates (x,y,z): ("<< x <<","<< y <<","<< z<<")"<<endl;
}
void planet::generate_planet(ifstream& fin) {
fin >> id_planet;
fin >> x;
fin >> y;
fin >> z;
}
int main() {
planet the_planets[10];
int i=0;
ifstream f_inn("route.txt");
if (f_inn.is_open())
{
f_inn >> i;
for(int j=0;j<i;j++)
{
the_planets[j].generate_planet(f_inn);
the_planets[j].report_planet_properties();
}
f_inn.close();
}
else cout << "Unable to open file\n";
return 0;
}
使用route.txt:
2
1
4
5
6
2
7
8
9
给出:
Planet's ID: 1
Planet's coordinates (x,y,z): (4,5,6)
Planet's ID: 2
Planet's coordinates (x,y,z): (7,8,9)
正如您所看到的,函数generate_planet()和report_planet_properties()现在是行星类的方法。
也许这可以帮到你。
答案 1 :(得分:1)
如果您使用the_planets
report_planet_properties(*the_planets[i]);
在上面一行中,您必须使用循环变量j
而不是i
这是您文件中行星的数量。
report_planet_properties(*the_planets[j]);