网站做任务包括什么,企业网站的建设规划,网站开发看书,wdcp 快速迁移网站我对unsigned char(在WinAPI中也是BYTE)和char指针之间的差异感到困惑.目前我正在使用一些基于ATL的遗留代码,我看到很多表达式如下#xff1a;CAtlArray rawContent;CALL_THE_FUNCTION_WHICH_FILLS_RAW_CONTENT(rawContent);return ArrayToUnicodeString(rawContent);// or r…我对unsigned char(在WinAPI中也是BYTE)和char指针之间的差异感到困惑.目前我正在使用一些基于ATL的遗留代码,我看到很多表达式如下CAtlArray rawContent;CALL_THE_FUNCTION_WHICH_FILLS_RAW_CONTENT(rawContent);return ArrayToUnicodeString(rawContent);// or return ArrayToAnsiString(rawContent);现在,ArrayToXXString的实现看起来如下CStringA ArrayToAnsiString(const CAtlArray array){CAtlArray copiedArray;copiedArray.Copy(array);copiedArray.Add(\0);// Casting from BYTE* - LPCSTR (const char*).return CStringA((LPCSTR)copiedArray.GetData());}CStringW ArrayToUnicodeString(const CAtlArray array){CAtlArray copiedArray;copiedArray.Copy(array);copiedArray.Add(\0);copiedArray.Add(\0);// Same here.return CStringW((LPCWSTR)copiedArray.GetData());}所以,问题对于所有可能的情况,从BYTE *到LPCSTR(const char *)的C风格演员是否安全在将数组数据转换为宽字符串时,是否真的有必要添加双重空终止转换例程CStringW((LPCWSTR)copiedArray.GetData())对我来说似乎无效,是真的吗任何方式使所有这些代码更容易理解和维护