【发布时间】:2011-11-14 16:13:19
【问题描述】:
如果我想用结构填充向量,并且在结构中我需要动态分配/重定位WCHAR 数组,我将如何填充它?
我不能使用std::wstring,因为我将使用Windows API 的成员。
而像RegQueryValueEx 这样的函数需要LPBYTE 来接收数据。
或者我应该使用其他一些 STL 容器吗?
示例代码:
typedef struct {
WCHAR *str1;
WCHAR *str2;
DWORD SomeOtherStuff;
} MYSTRUCT;
vector<MYSTRUCT> myvector;
【问题讨论】:
-
我有多种理由相信你的设计很糟糕。为什么不问根本问题,而不是问你决定采取的这个非常可疑的第一步?
-
Kerrek 可能直言不讳地提到
RegQueryValueEx不会为您分配缓冲区,因此对于您当前的结构,您将需要异常不安全的堆分配等。更大的问题是,什么具体问题需要来自注册表的这些可变数量的数据? -
好吧,我将枚举注册表中的键,我想保存一些值以在列表视图控件 (Windows API) 中显示给用户。
-
@Josh:如果您有“几个值”,那么也许直接查询它们。否则,如果您正在制作某种注册表查看器,请查看
RegEnumKeyEx和RegQueryInfoKey并使用一些绑定结构或变体来处理您可能想要显示的所有类型的注册表数据。 -
@AJG85 它不完全是一个注册表查看器。但是我要枚举大约 20-30 个键,每个键都有大约 5 个值,我想将它们存储在一些数据结构中以便于访问。我目前正在使用
RegQueryValueEx和RegEnumKeyEx来读取密钥。所以我只是在寻找一种方法来实现数据结构来存储数据。