我需要將元組轉換爲字節數組。這是我使用轉換爲字節數組的代碼:識別元組中的指針C++ 11
template< typename T > std::array< byte, sizeof(T) > get_bytes(const T& multiKeys)
{
std::array< byte, sizeof(T) > byteArr ;
const byte* start = reinterpret_cast< const byte* >(std::addressof(multiKeys)) ;
const byte* end = start + sizeof(T);
std::copy(start, end, std::begin(byteArr));
return byteArr;
}
這是我如何稱呼它:
void foo(T... keyTypes){
keys = std::tuple<T... >(keyTypes...);
const auto bytes = get_bytes(keys);
}
我需要擴大此碼,以便當指針元組的一部分,我將其解引用到它的值,然後將新的元組(不帶任何指針)傳遞給get_bytes()函數。如何檢測元組中是否存在指針?然後我可以遍歷該元組並對其進行解引用:
std::cout << *std::get<2>(keys) << std::endl;
我認爲這隻適用於所有的元組元素都是指針的情況。如果一個元組元素是一個char *,其餘的則是int。 – jok
@jok:然後你爲指針調用'char get_bytes(char const *)',爲整數調用'int get_bytes (int)'。只是爲了澄清:這當然假設你正在遍歷所有的元組元素,並在每個單獨的元素上調用'get_bytes'。 –
MSalters