我正在创建一个指向数组的char指针,并希望对其进行初始化,以便数组中的所有元素都为0(以位为单位)。因此,例如:
char* buffer = new char[bufferSize];
buffer [0]至buffer [bufferSize]将在每个索引中存储'00000000'。我试图在每个单元格中存储8位零。
我如何初始化它?我也应该使用fill()。
到目前为止,
fill(&buffer, &buffer[bufferSize], 0)
不起作用。
您可以使用fill
,但是您必须记住它接受一对迭代器。指向数组元素的指针已经是数组的迭代器。不需要使用迭代器的地址来传递它,因此您的第一个参数是错误的。更正确的形式是
std::fill(buffer, buffer + bufferSize, 0);
或
std::fill_n(buffer, bufferSize, 0);
或者,您可以将新表达式本身中的数组初始化为零
char* buffer = new char[bufferSize] {} ;
// ^ - initializer, for char this will zero out the array.
最佳方法是使用字符串:
std::string buffer(bufferSize, '\0');
如果您坚持使用char*
,请使用calloc
:
char* buffer = static_cast<char*>(std::calloc(bufferSize, 1));
如果已经有了缓冲区,则可以使用memset
将其归零:
std::memset(buffer, 0, bufferSize);