簡體   English   中英

如何將char數組中的所有位設置為零?

[英]How to set all the bits in a char array to zeros?

我正在創建一個指向數組的字符指針,並希望對其進行初始化,以便數組中的所有元素都為 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);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM