質問

I変換する必要があるCStringをバイト配列になります。なぜだかよくわかりませんが、あとで見つけたインターネットな仕 例えば、

CString str = _T("string");

りかく 1)

BYTE *pbBuffer = (BYTE*)(LPCTSTR)str;

2)

BYTE *pbBuffer = new BYTE[str.GetLength()+1];
memcpy(pbBuffer, (VOID*)(LPCTSTR)StrRegID, str.GetLength());

3)

BYTE *pbBuffer = (BYTE*)str.GetString();

常に pbBuffer を含んだ最初の文字の str

DWORD dwBufferLen = strlen((char *)pbBuffer)+1;

2

ものを利用した場合、定数の文字列:

BYTE *pbBuffer = (BYTE*)"string";

pbBuffer を含む全体の文字列

場所は私の間違い?

役に立ちましたか?

解決

おCStringはUnicode(バイト文字)とうとして解釈されANSI(イト文字)を指定する。この結果ん。

の代わりに鋳造の基本となるバッファへ char* 変換する必要がある。使用 WideCharToMultiByte() います。

他のヒント

さんの作成とunicodeで扱います。にあるということCStringを含むwchar_tではなく文字に置き換わります。に変換するwchar_tのポインタをcharポインタを原因とする解釈のバイトの最初のwchar_t文字列としてターミネーター(年は0のための一般的な文字)

使用時visual studioを使用_T()を宣言する文字列リテラルとTCHARとしてのキャラクタータイプです。お場合:

BYTE* pBuffer = (BYTE*)(LPCTSTR)str;

のバッファが、そのバイトはゼロとなります。

使用CStringAが必要な場合はANSI文字列になります。(その後はスキップの_T()が初期化)

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top