我正在查看与该主题相关的任何相关主题。很难理解它们。这是我正在处理的代码片段
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无法找到一种方便的方法。
答案 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