在不同函数中使用来自外部文件的输入数据的最佳实践

时间:2017-03-16 16:02:44

标签: c++ class global-variables

对于c ++中的小项目,我需要从文本文件中初始化一些变量,并使这些变量可用于代码中的多个函数。我现在这样做的方法是创建一个类,该类读取并返回这些值,并创建该类的单个全局实例,然后项目中的所有函数都可以访问它。然而,对我来说这似乎不是一个非常优雅的解决方案,我想知道这里最好的做法是什么。解析变量作为参数对我来说并不是一个选项,因为我通常在不同的函数中需要很多这些变量。

感谢您的任何建议!

MWE:

#include <iostream>
#include <stdio.h>
#include <fstream>
#include <sstream>

using namespace std;

class indata {
    int age;
    double weight;
    double length;
public:
    indata ();
    int getAge(void)
    {
        return age;
    }
    double getWeight(void)
    {
        return weight;
    }
    double getLength(void)
    {
        return length;
    }
};

indata::indata () {
    ifstream inputfile;
    inputfile.open ("input.dat");
    inputfile>>age;
    inputfile>>weight;
    inputfile>>length;
    inputfile.close();
};

// make class instance global
indata in;

double Length2inch()
{
    const double cm2inch = 1./2.54;
    double Length = in.getLength();
    return Length*cm2inch;
};

int main () {
    cout << "Age    :  " << in.getAge() << endl;
    cout << "Weight :  " << in.getWeight() << endl;
    cout << "Length :  " << in.getLength() << endl;
    cout << endl;
    cout << "Length in inches: " << Length2inch() << endl;
    return 0;
}

input.dat:

32
75
175

0 个答案:

没有答案