你好,我有几个typedef:
typedef unsigned char Byte;
typedef std::vector<Byte> ByteVector;
typedef std::wstring String;
我需要将
String
转换为ByteVector
,我尝试了以下代码:String str = L"123";
ByteVector vect(str.begin(), str.end());
作为结果,
vector
包含3个元素:1、2、3。然而,它是一个wstring
,因此该字符串中的每个字符都是宽字符,所以我的期望结果应该是:0、1、0、2、0、3。有没有标准的方法可以做到这一点,还是我需要编写一些自定义函数。
char*
并通过它访问字节(但不能保证对其进行解释),而且unsigned char
需要具有与char
相同的大小和对齐要求。因此,您可以合法地执行vect((Byte*)str.data(), ((Byte*)str.data())+(sizeof(wchar_t)*str.size()));
。虽然我不会称之为“好主意”。 - BoBTFishdata()
返回的指针上)使用reinterpret_cast< const unsigned char* >
。如果您需要特定字节顺序,则必须自己进行转换。 - Medinoc