【问题标题】:How to convert CString to CByteArray?如何将 CString 转换为 CByteArray?
【发布时间】:2013-03-18 11:09:53
【问题描述】:

我知道将CByteArray 转换为CString 非常简单。但是我该如何反其道而行之——从CStringCByteArray

【问题讨论】:

    标签: c++ mfc cstring


    【解决方案1】:

    CString 类的GetBuffer() 方法返回你需要的数组。之后,您可以使用 memcpy 或其他类似函数将其复制到 CByteArray 对象。

    CString csData = L"someData";
    CByteArray byteArr;
    
    BYTE *pByteArray = (PBYTE)(LPCTSTR)csData.GetBuffer();
    byteArr.SetSize(csData.GetLength());
    
    memcpy(byteArr.GetData(), pByteArray, csData.GetLength());
    

    【讨论】:

      【解决方案2】:

      您需要考虑到,CString 中的 1 个字符通常不是 1 个字节。

      const size_t noBytes = sizeof(CString::XCHAR) * myString.GetLength();
      byteArray.SetSize( noBytes );
      std::memcpy( 
          byteArray.GetData(),
          reinterpret_cast<BYTE*>(myString.GetBuffer()), 
          noBytes );
      

      所以你需要考虑这是否真的是预期的行为。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2023-04-01
        • 2011-11-23
        • 2012-03-07
        • 2011-07-29
        • 2014-11-27
        • 2011-04-30
        • 2012-09-18
        • 1970-01-01
        相关资源
        最近更新 更多