如果从注册表中得到一个 gring 并且当我将它放在消息框中时它会正确显示。::MessageBoxW(0, (LPCWSTR)achValue, _T("找到"), MB_YESNO);
该值存储在 archValue 中,它是一个 DWORD。我想要做的是将它与以下字符串“2.0.7045.0”进行比较,但 strcmp 无法为我工作。
任何关于如何做到这一点的想法都将不胜感激。在 c++ 中相当垃圾,我无法像在 dll 中那样轻松调试。
非常感激
托尼
如果从注册表中得到一个 gring 并且当我将它放在消息框中时它会正确显示。::MessageBoxW(0, (LPCWSTR)achValue, _T("找到"), MB_YESNO);
该值存储在 archValue 中,它是一个 DWORD。我想要做的是将它与以下字符串“2.0.7045.0”进行比较,但 strcmp 无法为我工作。
任何关于如何做到这一点的想法都将不胜感激。在 c++ 中相当垃圾,我无法像在 dll 中那样轻松调试。
非常感激
托尼
您需要使用 strcmp 的宽字符版本:wcscmp。
这个问题令人困惑;您在从注册表获取数据或执行 strcmp 时遇到问题?
你从注册表中得到一个 DWORD (???) 应该类似于 "2.0.7045.0" ?您不确定它不是字符串 (REG_SZ) 吗?
如果您可以从注册表中获取字符串,则应该可以进行字符串比较;请记住,如果字符串相等,strcmp(或其他类似的函数/方法)将返回 0(零)。
你有地狱般的弦乐混合。
MessageBoxW
- 适用于 unicode 字符串。
_T("Found")
- 如果需要,添加 unicode 说明符的宏(来自项目设置中的定义)。
LPCWSTR
- Unicode 字符串 ( const wchar_t*
)。
strcmp
- 比较非 unicode 字符串。
您应该使用所有功能中的一种。w 或 t 或非 unicode 字符串。