2016-08-17 13 views
1

したがって、UDPソケットから受信バイトを受信する100長のChar配列を初期化しました。私は配列のように1文字を得ることができます。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のように、単にstartとendのインデックスを与えることで、文字列からサブ文字列を抽出することができます。

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

私はブーストアレイのcharと同様の機能を探しています。ブースト配列のドキュメントでは、 "演算子"の使用について言及していますが、私はそれをどのように使用するのか分かりません。

答えて

3

のコンストラクタを使用できます。すべての標準コンテナboost::arrayサポートイテレータ同様

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

+0

それは魅力的なように機能しました。 recv_buffer_()の後で.data()を見逃しました。 –

+0

@AnumSheraz申し訳ありません...私は答えを更新しました。 –

2

範囲を取得するには、たとえば次のようにします。 recv_buffer_.begin() + 2を先頭に、 recv_buffer_.begin() + 8が最後になります。

関連する問題