如何将char *复制到16个字节的数组

时间:2018-05-31 16:35:39

标签: c++

如何将char *复制到16个字节的数组。

const char *SK = "1234456789999978";
sample_aes_gcm_128bit_key_t alice[16];

memcpy(alice, (sample_aes_gcm_128bit_key_t*)SK, 16); //gives error

sample_aes_gcm_128bit_key_t

的定义
  

typedef uint8_t sample_aes_gcm_128bit_key_t [16];

错误: 错误:在'('标记之前)的预期构造函数,析构函数或类型转换  memcpy(alice,(sample_aes_gcm_128bit_key_t *)SK,16);

2 个答案:

答案 0 :(得分:0)

这对我有用:

#include <iostream>
#include <cstring>

int main()
{
    typedef int sgx_aes_gcm_128bit_key_t;
    const char *SK = "1234456789999978";
    sgx_aes_gcm_128bit_key_t alice[16];
    std::copy(SK, SK + strlen(SK), alice);
    for(auto& i : alice){
        std::cout << i - '0';
    }
    return 0;
}

请注意您的typedef名称与您使用的名称相匹配。 (它没有问题。)你可以删除演员sgx_aes_gcm_128bit_key_t。希望这能完成你想要做的事情。

答案 1 :(得分:0)

如果你想使用memcpy和C ++,这是完全可能的。在memcpy中你应该使用强制转换为(void *)

memcpy((void*)alice, (void*)SK, 16); 

确保正确获取类型和大小以防止分段错误。