我想创建一个char数组并给出8位值。例如; buf[0] = 0000 0001; // 1
和buf[1] = 0000 0010; //2
,依此类推。
当我用断点观看时,我看到的buf是 empty 。在其他帖子中,人们提供的建议如“如果要查看整数,则放置(无符号)强制转换”,它仅适用于cout。
我只想用有序递增数字填充char数组。我使用了int,但它是4个字节,相反,我认为给uint8_t可以更好地用数字填充char数组。
char *buf = new char[5];
for (uint8_t i = 0; i < 5; i++)
{
buf[i] = i;
}
更改了循环int
答案 0 :(得分:1)
您的调试器似乎假设所有char*
都指向C样式的字符串。由于它遇到的第一个char
的值为零,因此标记了该字符串的结尾。
大多数调试器允许您提供任意表达式来求值。如果使用强制转换提供了实际上是的信息,则可能会正确显示该阵列:
reinterpret_cast<char(*)[5]>(buf)
在任何情况下,您都不应使用new
,而应使用std::vector<char>
,此外,调试器应该知道如何正确显示。