繁体   English   中英

复制boost :: array <char> 到std :: string

[英]Copying boost::array<char> to std::string

我正在尝试将boost::array<char>std::string

boost::array<char, 1024> _buffer;
std::string data;
std::copy(_buffer.begin(), _buffer.begin()+bytes_transferred, data.begin());

这是行不通的。 所以我做了一点修改。

char _buffer[1024];
std::string data;
std::copy(_buffer, _buffer+bytes_transferred, data.begin());

第二个也不工作。

这里的问题是, copy假定您正在写入的数据已经存在空间; 它不会为您创建任何新房间。 因此,上述两段代码都会导致未定义的行为,因为您要将字符复制到以前未保留空间的位置。

最好的方法是使用string构造函数:

boost::array<char, 1024> _buffer;
std::string data(_buffer.begin(), _buffer.end());

要么

char _buffer[1024];
std::string data(_buffer, _buffer + 1024);

这会将字符串初始化为存储在数组中的数据的副本。

希望这可以帮助!

您可以使用back_insert_iterator 对其进行分配将调用基础容器的push_back函数,因此您无需担心手动分配空间。

std::copy(_buffer.begin(), _buffer.begin()+bytes_transferred, std::back_inserter(data));

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM