Сравнение строк не работает в 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 строки.