我认为使用
std::vector<char>
是最直接的方法。
std::copy
在情况下,在使用上述两种情况下,我试图将整个内容复制到auto buffer = std::vector<char>();
buffer.reserve(1024);
{
const auto line = std::string_view("Content-Type: application/json\r\n");
std::copy(line.begin(), line.end(), buffer.end());
}
{
const auto line = std::string_view("Content-Length: 200\r\n");
std::copy(line.begin(), line.end(), buffer.end());
}
中,这并不明显。目的地地址应为
std::copy
端。
,但是,此代码是毫无意义的。
它复制了数据的零字节。考虑了一段时间后,我实际上不确定为什么是这种情况。最初,我认为这是因为
line
正在检查输出迭代器以确保其保持界限。但是,我不确定table返回的迭代器如何知道它是否处于范围。 (由于该迭代器无法访问
buffer
的其他数据成员。)这是一个愚蠢的想法...总结:
我不确定为什么这不起作用(为什么复制数据的零字节?)
这可能不是解决问题的正确方法。我应该做什么?
如果您有C ++ 23,那么这很简单:
buffer
std::copy
,您需要传递一个迭代器,该迭代器插入容器中,而不是只指向元素的迭代器。
buffer.end()