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

时间:2015-03-30 06:55:28

标签: c++ winapi embedded-resource ini boost-propertytree

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

我感兴趣的是加载.ini文件(在运行时来自资源)并使用Boost或Win32 API将其解析为.ini文件,但问题是我该怎么办?

似乎可以使用QT进行此类操作。

我已经尝试加载资源文件并为read_ini()分配二进制数据/字符串文件,但之后不会迭代它。

是否有可能做这样的事情?

代码片段:

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文件中提取文本的方式。

1 个答案:

答案 0 :(得分:1)

我想你可能正在寻找

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);