簡體   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