繁体   English   中英

将CString转换为const字节的Unicode项目*?

[英]Unicode project for CString to const byte*?

有人可以帮助我将CString转换为const字节指针。 我尝试下面的代码,但是它不起作用。 我的程序使用Unicode设置。

Cstring hello = "MyApp";
const BYTE* pData = (const BYTE*)(LPCTSTR)hello;

谢谢。

如何将CString转换为BYTE指针

  • 将其解释为ascii字符串:

     CStringA asciiString( hello ); const BYTE* lpData = (const BYTE*)(LPCSTR)asciiString; 
  • 转换为代表本地代码页中字符串的字节:

     CT2CA buf( hello ); const BYTE* lpData = (const BYTE*)buf; 

对于初学者,您需要了解是否正在使用unicode。 默认情况下,Visual Studio喜欢制作应用程序,以便它们使用Unicode。 如果要使用ANSI(每个字母仅使用1个字节),则需要将其从Unicode转换为ANSI。 这将为您提供BYTE *对象。 这是一种方法:

    CString hello;
    hello=L"MyApp"; // Unicode string

int iChars = WideCharToMultiByte( CP_UTF8,0,(LPCWSTR) hello,-1,NULL,0,NULL,NULL); // First we need to get the number of characters in the Unicode string
if (iChars == 0) 
    return 0; // There are no characters here.

BYTE* lpBuff = new BYTE[iChars];  // alocate the buffer with the number of characters found
    WideCharToMultiByte(CP_UTF8,0,(LPCWSTR) hello,-1,(LPSTR) lpBuff,iChars-1, NULL, NULL); // And convert the Unicode to ANSI, then put the result in our buffer.

//如果要使其具有恒定字节指针,只需添加以下行:

    const BYTE* cbOut = lpBuff;

现在,如果您想要的只是访问CString本身,那么只需将其转换为:

    const TCHAR* MyString = (LPCTSTR) hello;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM