質問

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

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

事前に感謝

役に立ちましたか?

解決

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

他のヒント

いくつかの解決策:

  • 代わりにstd :: wcoutに書き込みます
  • 変換:
    • std :: codecvtを使用する標準的な方法
    • WideCharToMultibyteを使用したWin32方式

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

比較に関しては、どういう意味かよくわかりません。

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

次を使用

#ifdef UNICODE
#define tcout wcout
#else
#define tcout cout
#endif
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top