【发布时间】:2018-09-18 13:02:49
【问题描述】:
我有无符号字符数组。我想使用 cout 打印所有数组值。 我该怎么做?
rtc::ZeroOnFreeBuffer<unsigned char> charArray(key_len * 2 + salt_len * 2);
cout<< charArray; --> ?
【问题讨论】:
-
使用循环遍历它并打印每个值?
我有无符号字符数组。我想使用 cout 打印所有数组值。 我该怎么做?
rtc::ZeroOnFreeBuffer<unsigned char> charArray(key_len * 2 + salt_len * 2);
cout<< charArray; --> ?
【问题讨论】:
for (auto&& c : charArray){
cout << c;
}
可能是最简单的方法,假设您想要实际的字符而不是数字(如果您想要数字,则将 auto&& 替换为 int),并且您的容器是可迭代的。
【讨论】:
cout << static_cast<int>(c) << ' ';
int 而不是auto&&。你的代码更简洁。两者都是自记录代码。我会在代码审查中将我的代码更改为您的解决方案。
auto&& 而不是const auto&?
假设你使用的是ZeroOnFreeBuffer from WebRTC,你可以使用for循环,获取当前缓冲区的大小:
size_t bufSize = charArray.size()
for (int i = 0; i < bufSize; i++){
cout << charArray[i];
}
无论如何,您如何访问数据并对其进行迭代取决于ZeroOnFreeBuffer 的性质。查看该对象的文档,它会为您提供访问数据的方法,查找缓冲区的大小,甚至可能如何获取诸如 range-for 循环之类的迭代器。
【讨论】: