【发布时间】:2020-06-30 22:02:29
【问题描述】:
所以我有一个函数接收void*,然后将其转换为uint8*,然后填充。在调用者代码中,它被附加到std::string。有点像下面的例子。
但是我想让它成为通用的,这样我就可以将不同的类型存储到字符串中,而无需对调用者代码中的特定类型进行硬编码。例如:如果我要将0x5 存储在一个字符数组中,我必须使用to_string(),如下所示。但是,如果我必须自己存储 char,我就不必使用 to_string()。
void foo(void *p) {
uint8_t *ptr = reinterpret_cast<uint8_t*>(p);
*ptr = 0x5; // for e.g
// now ptr stores a char. th
*ptr = 'C';
}
int main(void) {
char arr[20] = {0};
std::string str;
foo(arr);
for (int i=0; i<20; i++) {
str += to_string(arr[i]);
}
cout << str; //
}
这是一个示例代码:https://cplayground.com/?p=jackal-cormorant-koala
您可以看到存储整数时它不打印的原因主要是因为我没有使用to_string()。我只是希望有一个通用函数来存储值。如果15 存储在字符数组中,则字符串存储"15"。如果'A'存储在char数组中,则字符串存储"A"
【问题讨论】:
-
评论不用于扩展讨论;这个对话是moved to chat。