質問
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()が初期化)
所属していません StackOverflow