我有一个.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文件中提取文本的方式。
答案 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);