gpt4 book ai didi

c++ - 在 C++ 中,如何从一个文件动态创建一个类的多个对象?

转载 作者:行者123 更新时间:2023-11-28 00:16:54 24 4
gpt4 key购买 nike

我仍然是一个 C++ 新手,一直在努力寻找解决这个问题的方法。我有一个包含多行格式的文件:

[字符] [双] [双]

例如:

p 100 0.80

r 50 50

p 20 4.8

r -100 25

我想使用行号名称将这些行存储在 Complex 类的对象中:

class Complex {
private:
int name;
char type;
double a;
double b;
public:
Complex(int name, char type, int x, int y);
char gettype();
double geta();
double getb();
};

我还想使用自定义构造函数创建它们:

Complex::Complex(int name, char type, int x, int y){                    //All data stored in standard form
if (type = 'p'){
a = x*cos(y);
b = x*sin(y);
}
else if (type = 'r'){
a = x;
b = y;
}
else{
std::cout << "Error" << std::endl;
a = 0;
b = 0;
}
}

我可以将字符串拆分为 double 和字符,但很难存储信息。起初我以为我可以使用循环动态命名它们,但我听说不能在 C++ 中动态创建类的实例。然后我查看了创建一个数组,但其他解决方案已经声明这必须使用默认构造函数来完成?当我不知道会有多少行并使用我自己的构造函数时,有什么方法可以存储这些信息吗?另外,构造函数中生成的a和b的值会存储到对象中吗?

最佳答案

处理这个问题的最简单方法是将数据存储在 std::vector 中,使用一个构造函数,该构造函数接受一个字符串,将输入行拆分为适当的值,如下所示:

Complex::Complex(int line_no, std::string const& input)
{
... Construct complex object using functionality you already know/have ...
}

...
// Process the file
std::ifstream input("inputfile.data");

int line_no = 1;

while (input.is_open() && input.good() && !input.eof())
{
std::string line;
std::getline(input, line);

complex_vector.push_back(Complex(line_no, line));
++line_no;
}

关于c++ - 在 C++ 中,如何从一个文件动态创建一个类的多个对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29630735/

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