使用std::copy复制缓冲区
Copying buffer with std::copy
我正在编写视频编码器,出于某种原因,我想使用矢量复制缓冲区std::copy
只复制第一个字符。我的目标是复制缓冲区并使用fwrite
将它们写入文件。
我使用的是谷歌本地客户端,它不允许我从主线程直接拥有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四次
复制是好的,它是从字符到字符串的转换是错误的,你可以使用适当的构造函数
for (std::vector<char>::iterator it = buffer_.begin(); it!=buffer_.end(); ++it)
{
char c = *it;
Logger::Log(std::string(1, c));
}
或
for (char c : buffer_) {
Logger::Log(std::string(1, c));
}
并且,可能,取决于您的记录器,连接形成一个唯一的字符串:
Logger::Log(std::string(buffer_.data(), buffer_.size()));
相关文章:
- 将缓冲区复制到剪贴板 [换行错误]
- 如何避免将数据缓冲区的额外副本复制到字符串?
- 适用于大型数组的无复制线程安全环形缓冲区
- Vulkan:设备在缓冲区复制过程中丢失
- 如何正确复制内存缓冲区?
- 如何将 QString 复制到缓冲区wchar_t
- 多线程和共享资源:使用C++定期将数据从缓冲区(数据结构)复制到文件
- strcpy_s将超过字符串长度的字符串复制到目标缓冲区(用 0xFE 填充)
- 返回指向矢量数据的指针,而不复制缓冲区和内存泄漏
- 来自 2 个指针的组合缓冲区,无需复制
- 无需额外复制即可存储和访问 deque<vectors> 缓冲区 (c++)?
- 包装二进制缓冲区 - 可能没有多余的移动/复制?
- 将包含位字段和动态数据的结构复制到 Char 数组缓冲区中
- 计算gpu前缓冲区中像素的平均值,而无需将前缓冲区复制回系统内存
- 将C++缓冲区复制到Python的最佳方式
- 将深度呈现缓冲区复制到深度缓冲区
- 将缓冲区复制到结构时缺少数据
- 如何将部分字符缓冲区复制到 std::string
- std::从内存缓冲区复制到矢量
- 我如何将图像的部分从缓冲区复制到纹理中以渲染