gpt4 book ai didi

c++ - 使用 std::copy 复制缓冲区

转载 作者:行者123 更新时间:2023-11-28 02:02:09 25 4
gpt4 key购买 nike

我正在编写一个视频编码器,出于某种原因我想使用 vector 复制缓冲区 std::copy 仅复制第一个字符。我的目标是复制缓冲区并使用 fwrite 将它们写入文件。

我正在使用 Google Native Client,它不允许我直接从主线程使用 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

最佳答案

复制没问题,错误的是从char到string的转换,你可以使用合适的构造函数

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()));

关于c++ - 使用 std::copy 复制缓冲区,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39019057/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com