如何从std :: string_view到std :: vector或std :: string?

问题描述 投票:0回答:0
复制到一个容器中。

我认为使用

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

c++ c++23
最新问题
© www.soinside.com 2019 - 2025. All rights reserved.