2016-08-17 21 views
1

所以我初始化了一個長度爲100的Char數組,它接收來自UDP套接字的傳入字節。我可以從數組中獲得單個字符,例如:從boost :: array提取字符集<char, 100>

boost::array<char, 100> recv_buffer_; 

std::cout << "1st char of array:>" << recv_buffer_[0] << std::endl; 
// or like this; 
std::cout << "1st char of array:>" << recv_buffer_.at(0) << std::endl; 

但我無法弄清楚如何從這個數組中提取一些字符集。即如果我在我的recv_buffer_中收到「這是一個測試」,我怎樣才能從索引2提取索引8中的子字符,即「is is a」。就像在python中,你可以通過簡單地給出開始和結束索引來從字符串中提取子字符串。

>>my_string = "this is a test" 
>>print my_string[2:8] 
>>is is a 

我正在尋找類似的功能爲boost數組字符。在boost數組的文檔中,提到使用「運算符」,但我不知道如何使用它。

回答

3

您可以使用string的構造函數。

string my_string(recv_buffer_.data() + 2, recv_buffer_.data() + 8 + 1);

+0

這就像一個魅力。您在recv_buffer_()後錯過了.data()。 –

+0

@AnumSheraz抱歉...我更新了答案。 –

2

像所有的標準容器boost::array支持迭代

要獲得一個範圍,你可以使用例如作爲開始,例如recv_buffer_.begin() + 2作爲結束的是recv_buffer_.begin() + 8