C++模板高手进 包含变长string的struct与二进制数组的相互转换
譬如以下一个应用场景
template <class T> bool get(const KEY &key, T &value, bool &b_valid) { assert(NULL != mp_conn); KEYS keys; keys.push_back(key); mp_conn->get(keys); const result_manager &res = mp_conn->get_result(); const results_type &results = res.get_results(); b_valid = !results.empty(); if (b_valid) { const BYTES &bytes = results[0]; const int n_bytes_size = bytes.size(); if (sizeof(T) > n_bytes_size) { memcpy(&value, (char *)&(bytes[0]), n_bytes_size); memset((char *)&value + n_bytes_size, 0, sizeof(T) - n_bytes_size); } else { memcpy(&value, (char *)&(bytes[0]), sizeof(T)); } } return (!res.is_error()); }