0
我正在寫一個視頻編碼器,我想複製緩衝區使用矢量由於某種原因std::copy
只複製第一個字符。我的目標是複製緩衝區並使用fwrite
將它們寫入文件。複製緩衝區與std ::複製
我使用谷歌本地客戶端不允許我從主線程有fwrite
直接,所以我創建了一個新的線程,我必須緩衝區移動到fwrite
我標記的多線程這個問題以獲得您對這種處理緩衝區的方法的反饋。
std::vector<char> buffer_(4);
char header[4];
header[0] = 'D';
header[1] = 'K';
header[2] = 'I';
header[3] = 'F';
unsigned dataArraySize = sizeof(header)/sizeof(char);
std::copy(&header[0], &header[dataArraySize], buffer_.begin());
std::stringstream ss;
std::string s;
for (std::vector<char>::iterator it = buffer_.begin(); it!=buffer_.end(); ++it)
{
char c = *it;
ss << c;
ss >> s;
Logger::Log(s);
}
對於輸出我只得到d四次
@DimChtz與OP一樣。 [該載體正在正確填充](http://coliru.stacked-crooked.com/a/fba93acdf2c04767)。問題存在於for循環中 – NathanOliver
聽起來好像您可能需要學習如何使用調試器來遍歷代碼。使用一個好的調試器,您可以逐行執行您的程序,並查看它與您期望的偏離的位置。如果你打算做任何編程,這是一個重要的工具。進一步閱讀:** [如何調試小程序](http://ericlippert.com/2014/03/05/how-to-debug-small-programs/)** – NathanOliver
在顯示的代碼的上下文中,您的'std :: copy'調用看起來正確。但沒有必要,只需要'std :: vector buffer_(std :: begin(header),std :: end(header));'並且向量將使用數組中的數據進行初始化。請注意,我只會在代碼***的背景下發言,因爲您將它展示給我們***。例如,如果你將數組傳遞給一個函數,你不能使用'sizeof'技巧來獲得它的大小。 –