1

WCHAR[]をstd::coutに配置する必要があります...これはネイティブWifiAPIコールバックから渡されるPWLAN_CONNECTION_NOTIFICATION_DATAの一部です。

std :: cout<<var;を試してみました。ただし、最初の文字の数値アドレスを出力します。比較(var == L"some text")も機能しません。デバッガーは期待値を返しますが、比較は0を返します。この配列を標準の文字列(std :: string)に変換するにはどうすればよいですか?

前もって感謝します

4

4 に答える 4

12

いくつかの解決策:

  • 代わりにstd::wcoutに書き込みます
  • 変換:
    • std::codecvtを使用する標準的な方法
    • WideCharToMultibyteを使用したWin32の方法
于 2009-10-26T15:44:29.837 に答える
9

に出力するには、代わりにcoutを使用する必要がありますstd::wcout

比較に関しては、私はあなたが何を意味するのかよくわかりません。

  • の場合varは、wchar_t[]2 つのポインターを比較しています。文字列の内容は同じかもしれませんが、異なるメモリ位置に物理的に割り当てられているため、結果はおそらく false になります。答えは、strcmpC スタイルの文字列 (char ポインター) を比較するような関数を使用するか、C++ の文字列クラスを使用することです。
  • operator==通常bool、整数ではなく a を返します。したがって、 を返すことはできますfalseが、返すことはできません0...自分で奇妙なオーバーロードを作成していない限り。var(これは、ユーザー定義型の場合にのみ可能です。
于 2009-10-26T15:46:26.743 に答える
4

var が であると仮定するとwchar_t *var == L"some text"ポインタ比較が行われます。var が指す文字列を比較するには、 などの関数を使用しますwcscmp

于 2009-10-26T15:50:38.433 に答える
3

以下を使用します

#ifdef UNICODE
#define tcout wcout
#else
#define tcout cout
#endif
于 2010-06-01T17:21:31.113 に答える