字符串比较在Visual C ++ 2005中不起作用

时间:2009-03-30 16:41:54

标签: c++ visual-studio visual-c++ visual-c++-2005 strcmp

如果从注册表中获取内容并在将其放入消息框时正确显示。 :: MessageBoxW(0,(LPCWSTR)achValue,_T(“Found”),MB_YESNO);

该值存储在archValue中,这是一个DWORD。我想要做的是将它与以下字符串“2.0.7045.0”进行比较,但strcmp无法为我工作。

任何有关如何做到这一点的想法都将受到高度赞赏。 在c ++上很垃圾,我不能像在dll中那样轻松调试。

非常感谢

3 个答案:

答案 0 :(得分:2)

您需要使用strcmp的宽字符版本:wcscmp

答案 1 :(得分:0)

这个问题令人困惑;从注册表获取数据或执行strcmp时遇到问题?

你从注册表中获得一个类似“2.0.7045.0”的DWORD(???)?你不确定它不是一个字符串(REG_SZ)吗?

如果你可以从注册表中获取字符串,你应该能够进行字符串比较;请记住,如果字符串是等号,strcmp(或其他类似的函数/方法)将返回0(零)。

答案 2 :(得分:0)

你有各种各样的字符串混合。

MessageBoxW - 使用unicode字符串 _T("Found") - 如果需要,添加unicode说明符的宏(从prject设置中的define中删除)。
LPCWSTR - unicode字符串(const wchar_t*)。
strcmp - 比较非unicode字符串。

你应该使用一种类型的所有功能。 w或t或非unicode字符串。