0

レジストリから gring を取得すると、メッセージ ボックスに配置すると正しく表示されます。::MessageBoxW(0, (LPCWSTR)achValue, _T("見つかった"), MB_YESNO);

値は、DWORD である archValue に格納されます。私がやりたいのは、それを次の文字列「2.0.7045.0」と比較することですが、strcmp は機能しません。

これを行う方法についてのアイデアは大歓迎です。C ++ではかなりゴミで、dllのように簡単にデバッグできません。

とても有難い

トニー

4

3 に答える 3

2

strcmpのワイド文字バージョンであるwcscmpを使用する必要があります

于 2009-03-30T16:47:34.357 に答える
0

質問は紛らわしいです。レジストリからデータを取得したり、strcmpを実行したりするのに問題がありますか?

レジストリから「2.0.7045.0」のようなDWORD(???)を取得しますか?文字列(REG_SZ)ではないかどうかわかりませんか?

レジストリから文字列を取得できる場合は、文字列比較を実行できるはずです。文字列が等しい場合、strcmp(または他の同様の関数/メソッド)は0(ゼロ)を返すことに注意してください。

于 2009-03-30T16:49:41.637 に答える
0

あなたは文字列の地獄のブレンドを持っています。

MessageBoxW--Unicode文字列で動作します。
_T("Found")-必要に応じてUnicode指定子を追加するマクロ(プロジェクト設定のdefineから依存)。
LPCWSTR--Unicode文字列(const wchar_t*)。
strcmp-非Unicode文字列を比較します。

すべての関数の1つのタイプを使用する必要があります。wまたはtまたは非Unicode文字列。

于 2009-03-30T16:49:48.690 に答える