从文件初始化静态常量成员
static const member initialization from file
如何使用存储在文件中的值初始化静态常量成员?例如:
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" );
}
}
相关文章:
- 私有类型的静态常量成员
- constexpr构造函数需要常量成员函数时出现问题
- Clang 格式 10.0 与 5.0 常量成员函数的格式不同
- 为什么"具有常量成员的结构"类型的指针不能指向"具有非常量成员的结构"?
- 常量成员函数中成员变量的类型
- 如何处理运算符=中的常量成员?
- 常量成员和没有setter的私有成员之间有什么区别
- C++:允许临时对象调用非常量成员函数的设计理念是什么?
- 移动具有常量成员的类的构造和分配
- ARM C++编译器不会编译具有可变常量成员的结构
- 强制在编译时计算类的类的常量成员
- 类中常量成员函数的 c++ 链接错误
- 为什么常量成员可以初始化两次?
- 专用常量成员函数的成员检测
- 与其他静态const成员初始化静态常量成员
- 具有静态和常量成员变量的对象
- 结构中的常量成员即使在初始化后也返回 0
- 在非常量成员函数中,为什么点这个非常量,而 decltype 指针这是常量
- 有没有一种通用方法来"unprotect"静态常量成员?
- 如何初始化共享复杂初始化代码的多个常量成员变量?