我有一个接受十六进制转储值列表的函数,它们作为初始化列表参数传递给该函数并复制到缓冲区中:
void func(void * buff, std::initializer_list<unsigned char> s) {
memcpy(buff, s.begin(), s.size());
}
我想做的是也将这些值作为字符串传递,例如“ 0x04 0x02 0x01”。两者都可以作为字符串或initializer_list传递给上述函数的参数。我知道我必须创建模板来实现这一目标。到目前为止,这是我尝试过的。我无法实现为模板
void func(void * buff, std::string s) {
unsigned char arr[s.length() + 1];
strcpy(arr, s.c_str());
std::initializer_list<unsigned char> hex_values(arr);
memcpy(d, hex_values.begin(), hex_values.size());
}
std::istringstream
并从中进行格式化输入:std::istringstream