如何将char数组中的所有位设置为零?

问题描述 投票:0回答:2

我正在创建一个指向数组的char指针,并希望对其进行初始化,以便数组中的所有元素都为0(以位为单位)。因此,例如:

char* buffer = new char[bufferSize];

buffer [0]至buffer [bufferSize]将在每个索引中存储'00000000'。我试图在每个单元格中存储8位零。

我如何初始化它?我也应该使用fill()。

到目前为止,

fill(&buffer, &buffer[bufferSize], 0)

不起作用。

c++ arrays pointers bit
2个回答
5
投票

您可以使用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.

0
投票

最佳方法是使用字符串:

std::string buffer(bufferSize, '\0');

如果您坚持使用char*,请使用calloc

char* buffer = static_cast<char*>(std::calloc(bufferSize, 1));

如果已经有了缓冲区,则可以使用memset将其归零:

std::memset(buffer, 0, bufferSize);
© www.soinside.com 2019 - 2024. All rights reserved.