c# char unsigned_c – unsigned char和char指针之间的区别
我對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())對我來說似乎無效,是真的嗎?
>任何方式使所有這些代碼更容易理解和維護?
總結
以上是生活随笔為你收集整理的c# char unsigned_c – unsigned char和char指针之间的区别的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: (linux与 qt)
- 下一篇: python django开发网站项目难