从文件初始化静态常量成员

static const member initialization from file

本文关键字:常量 成员 静态 初始化 文件      更新时间:2023-10-16

如何使用存储在文件中的值初始化静态常量成员?例如:

Class Foo
{
private:
  static const String DataFromFile;
  void InitData (void);
};

我知道对于一个短值,我可以用初始化

const String DataFromFile = "Some Value";

但是,如果这个值真的是一个"大"值,并且经过加密并存储在磁盘文件中,该怎么办?在将其放入DataFromFile之前,我需要对其进行解密。

有没有办法做到这一点,或者我可以忘记它,把它当作一个正则变量来处理?也就是说,而不是:

static const String DataFromFile;

我可以申报为:吗

String DataFromFile;

并用函数初始化它?

如何使用以下值初始化静态常量成员存储在文件中?例如:

像这样:

//X.h
#include <string>
class X
{
  //...
  static const std::string cFILE_TEXT_;
  static const bool cINIT_ERROR_;
};
//X.cpp
//...#include etc...
#include <fstream>
#include <stdexcept>
namespace {    
std::string getTextFromFile( const std::string& fileNamePath )
{
  std::string fileContents;
  std::ifstream myFile( fileNamePath.c_str() );
  if( !(myFile >> fileContents) );
  {
    return std::string();
  }
  return fileContents;
}
}
const std::string X::cFILE_TEXT_( getTextFromFile( "MyPath/MyFile.txt" ) );
const bool X::cINIT_ERROR_( cFILE_TEXT_.empty() );
X::X()
{ 
  if( cINIT_ERROR_ )
  { 
   throw std::runtime_error( "xxx" ); 
  }
}