在运行时使用 C++/boost 从资源中解析 .ini 文件

Parse .ini file from resource during runtime using C++/boost

我有一个 .ini 文件,它作为 RCDATA 位于资源内部。 我在运行时从资源中加载它,我能够将它作为一个很长的字符串获取。

我有兴趣加载 .ini 文件(在运行时从资源中)并使用 Boost 或 Win32 将其解析为 .ini 文件API但问题是我该怎么做?

似乎可以使用 QT 来做这样的事情。

我已经尝试加载资源文件并分配 read_ini() 二进制 data/string 文件,但之后它没有迭代它。

有没有可能做这样的事情?

代码片段:

HRSRC myResource = FindResource(NULL, MAKEINTRESOURCE(101), RT_RCDATA);
unsigned int myResourceSize = SizeofResource(NULL, myResource);
HGLOBAL myResourceData = LoadResource(NULL, myResource);
char* pMyBinaryData = (char*)LockResource(myResourceData);
char *text = (char*)malloc(myResourceSize + 1);
memcpy(text, pMyBinaryData, myResourceSize);
text[myResourceSize] = 0;//last char array is null
FreeResource(myResourceData);

我在 .txt/.ini 文件中提取文本的方式。

我想你可能正在寻找

std::istringstream iss(the_large_string_value);

boost::property_tree::ptree pt;
boost::property_tree::read_ini(iss, pt);

当然,您可以以流的形式读取(非常大的)资源。 Boost IOstreams 有一个 array_source 可以提供帮助。

这里最简单的事情是

std::string the_large_resource_string_value(pMyBinaryData, myResourceSize);