C++读取resource.rc文件中的productversion项,并赋值给std::string变量
时间: 2024-10-09 14:05:14 浏览: 42
将Windows字符串资源加载到std :: string或std :: wstring中
在C++中,资源文件(如resource.rc)通常包含应用程序的一些静态数据,包括字符串资源等。要从`resource.rc`文件中读取`PRODUCTVERSION`项并将其赋值给`std::string`变量,你需要使用Windows API函数`LoadString`以及`GetVersionInfo`。这里是一个简单的示例:
首先,你需要在`resource.rc`里定义PRODUCTVERSION资源,例如:
```rc
STRING PRODUCTVERSION "Your Product Version Here", %ld, %ld
```
然后,在C++代码中处理这个过程:
```cpp
#include <windows.h>
#include <atlres.h> // 引入atlres头文件以包含LoadString宏
// 假设你有一个HINSTANCE handle代表已经加载了资源
HINSTANCE hInstance = ...;
// 使用LoadString宏获取字符串资源
LPCTSTR productVersionResourceID = MAKEINTRESOURCE(IDC_PRODUCTVERSION);
std::string productVersion;
int nSize = ::LoadString(hInstance, productVersionResourceID, NULL, 0); // 获取字符串长度
if (nSize > 0) {
std::vector<wchar_t> buffer(nSize + 1); // 预留结束符
if (::LoadString(hInstance, productVersionResourceID, &buffer[0], nSize + 1)) { // 读取字符串到缓冲区
std::copy(buffer.begin(), buffer.end(), std::back_inserter(productVersion)); // 转换为std::string
}
}
// 现在productVersion包含了PRODUCTVERSION的值
```
注意,`LoadString`返回的是Unicode字符串,如果你的应用程序需要ANSI字符,记得转换一下。
阅读全文