我从注册表中获取值。该值可能包含双字节字符。 我稍后必须通过网络传输这个到一个C#客户端来显示。 C#都是unicode。 如果将该函数称为非Unicode,则该函数返回MBCS。unicode或不unicode
我应该使用什么?
string result = string(cbData);
RegQueryValueExA(h_sub_key, "DisplayName", NULL, NULL, (LPBYTE) &result[0], &cbData)
或
string result = string(cbData);
RegQueryValueExW(h_sub_key, L"DisplayName", NULL, NULL, (LPBYTE) &result[0], &cbData)
我会在下面的两个答案中添加RegQueryValueEx需要计算的字节数,而不是字符数,所以您还需要考虑这一点。 – tinman
我还会说,作为构造函数的字符串(cbData)不会编译,如果你的cbData太长,那么即使它们是空字符(例如result.length() == cbData,即使RegQueryValueEx只复制6个字符),RegQueryValueEx也不会终止你的字符串,所以你需要在某处调整你的长度。所以,直到你修复它们,不要使用你发布的任何一行;) – tinman