从.dat / .txt文件中读取const参数

时间:2015-02-16 20:20:33

标签: c++

我正在查看与该主题相关的任何相关主题。很难理解它们。这是我正在处理的代码片段

int main(int argc, char* argv[]) {
    plbInit(&argc, &argv);

    global::directories().setOutputDir("./1/");

    const T Ra = 5.15782958531050;
    const T lx  = 1.0;
    const T ly  = 1.0;
    const T uMax  = 1e-3;
    const T Pr = 0.00354054054054;

    const T hotTemperature = 1.0;
    const T coldTemperature = 0.0;
    const plint resolution = 999;

        RayleighBenardFlowParam<T,NSDESCRIPTOR,ADESCRIPTOR> parameters (
         Ra,
         Pr,
         uMax,
         coldTemperature,
         hotTemperature,
         resolution,
         lx,
         ly

   );
}

我真正想做的是将所有const参数作为.dat / txt文件的输入。
根据定义,我需要同时初始化它们。使用ifstream无法找到一种方便的方法。

1 个答案:

答案 0 :(得分:1)

你并没有为你在样本中提到的那个神秘的RayleighBenardFlowParam模板类提供足够的上下文(在询问代码时请务必考虑创建一个MCVE。) 还有像

这样的东西
const T Ra = 5.15782958531050;
   // ^

没有意义。 T仅在您引用的模板类的上下文中有效,并且您需要为该类的实例化提供具体类型。
我可以猜测RayleighBenardFlowParam类(以及它的构造函数)的声明看起来有点像

 template<typename T, typename NsDescriptor, typename ADescriptor>
 class RayleighBenardFlowParam {
 public:
     RayleighBenardFlowParam
        ( const T& Ra
        , const T& Pr
        , const T& uMax
        , const T& coldTemperature
        , const T& hotTemperature
        , const plint& resolution
        , const T& lx
        , const T& ly);
 };

但是,通过如何从 .dat/.txt 文件读取值并向函数提供参数,希望查看const值,可以轻松回答:< / p>

  

我真正想做的是将所有const参数作为.dat / txt文件的输入。
  根据定义,我需要同时初始化它们。

注意:您不需要声明const变量类型,只要在任何地方为const参数提供参考。这可以由编译器自动推断出来。

您根本没有这些值的const变量声明

double Ra;
double lx;
double ly;
double uMax;
double Pr;

double hotTemperature;
double coldTemperature;
plint resolution;

std::isfstream input("MyFile.dat")
input >> Ra;
input >> lx;
input >> ly;
input >> uMax;
input >> Pr;

input >> hotTemperature;
input >> coldTemperature;
input >> resolution;

if(input) {
    RayleighBenardFlowParam<double,NSDESCRIPTOR,ADESCRIPTOR> parameters (
       Ra,
       Pr,
       uMax,
       coldTemperature,
       hotTemperature,
       resolution,
       lx,
       ly);
 }

MyFile.dat的内容如下所示

5.15782958531050
1.0
1.0
1e-3
0.00354054054054
1.0
0.0
999