问题描述
我正在编写一个代码,其中两个变量是常量,但它们需要从 .txt 文件中读取。
我已经写好了函数
void ReadValues(const char filename[],double& sig,double& tau)
{
std::ifstream infile;
infile.open(filename);
if(!infile.is_open())
{
std::cout << "File is not open. Exiting." << std::endl;
exit(EXIT_FAILURE);
}
while(!infile.eof())
infile >> sig >> tau;
infile.close();
}
显然我不能在原型中添加 const 说明符。我做的是以下内容:
double s,t;
ReadValues("myfile.txt",s,t);
const double S = s;
const double T = t;
有更好的方法吗?
解决方法
您可以稍微修改 ReadValues
以将 2 个 double
作为 pair
返回。
auto ReadValues(const char filename[]) -> std::pair<double,double>
{
double sig,tau; // local variable instead of reference parameters
// read from file into sig and tau
return {sig,tau};
}
现在您可以像这样设置变量 const
。
auto const [S,T] = ReadValues("myfile.txt");