請建議一個有效的方法來從basic_string < char16_t>複製字節到矢量< uint8_t>。複製一個basic_string <char16_t>到矢量<uint8_t>
我不關心編碼,只是想複製字節到bytearray。稍後將在下游使用正確的編碼進行解釋。
謝謝。
請建議一個有效的方法來從basic_string < char16_t>複製字節到矢量< uint8_t>。複製一個basic_string <char16_t>到矢量<uint8_t>
我不關心編碼,只是想複製字節到bytearray。稍後將在下游使用正確的編碼進行解釋。
謝謝。
一種選擇是讓數據指針,將它轉換爲新的類型,並將其分配給您的目標向量:
std::basic_string<char16_t> src;
const uint8_t *begin = reinterpret_cast<uint8_t const*>(src.data());
const uint8_t *end = reinterpret_cast<uint8_t const*>(src.data() + src.size());
std::vector<uint8_t> dst(begin,end);
這是極少數情況下reinterpret_cast
是一個完全有效的選擇。從cppreference(由我添加的亮點):
不像
static_cast
,但像const_cast
,使用reinterpret_cast表達不編譯任何CPU指令。它純粹是一個編譯器指令,它指示編譯器將表達式的位序列(對象表示)視爲具有類型new_type
。
所以,你想在字符串中的每個字符矢量的兩個整數? – 2014-09-04 15:03:05
是的。我的字符是UTF-16。所以它是兩個字節。 – SkypeMeSM 2014-09-04 18:04:29