Сравнение строк не работает в Visual C++ 2005

Если получить реестр из реестра, и он правильно отображается, когда я помещаю его в окно сообщения.::MessageBoxW(0, (LPCWSTR)achValue, _T("Найдено"), MB_YESNO);

Значение хранится в archValue, который является DWORD. Я хочу сравнить его со следующей строкой "2.0.7045.0", но strcmp не работает для меня.

Любые идеи о том, как это сделать, будут высоко оценены. Довольно мусор на C++, и я не могу отладить легко, как в DLL.

Очень признателен

Тони

3 ответа

Решение

Вам нужно использовать широкоформатную версию strcmp: wcscmp.

Вопрос сбивает с толку; у вас проблемы с получением данных из реестра или выполнением strcmp?

Вы получаете DWORD (???) из реестра, который должен быть что-то вроде "2.0.7045.0"? Вы не уверены, что это не строка (REG_SZ)?

Если вы можете извлечь строку из реестра, вы сможете сравнить строки; помните, что strcmp (или другие подобные функции / методы) возвращают 0 (ноль), если строки равны.

У тебя адская смесь струн.

MessageBoxW - работает со строками Unicode.
_T("Found") - макрос, который добавляет спецификатор юникода, если это необходимо (зависит от определения в настройках проекта).
LPCWSTR - строка в кодировке Юникод (const wchar_t*).
strcmp сравнить строки не в Юникоде.

Вы должны использовать один тип всех функций. w или t или не-Unicode строки.

Другие вопросы по тегам