[英]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.