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'技巧来获得它的大小。 –