2017-07-31 3 views
1

私はboost :: const_bufferを受け取り、そのバイトをループで反復処理する関数を実装しようとしています。私はバッファイテレータがあることを見ましたが、それはboost :: asio :: buffers_typeに当てはまると思われます。バッファの単純なトラバーサルの例は見つかりませんでした。boost :: asio :: buffer

buffer_castを介してバッファにアクセスしてchar *などのネイティブ型に変換し、伝統的な方法でそれをトラバースする標準的な方法はありますか?またはこれを行うための直接ヘルパー関数がありますか?

答えて

1

boost::asio::buffer_cast<>

#include <boost/asio.hpp> 
#include <string> 
#include <iostream> 
#include <algorithm> 
#include <iterator> 

namespace asio = boost::asio; 

void test(asio::const_buffer const& buffer) 
{ 
    auto first = asio::buffer_cast<const char*>(buffer); 
    auto last = first + asio::buffer_size(buffer); 

    std::copy(first, last, std::ostream_iterator<char>(std::cout)); 
    std::cout << std::endl; 
} 

int main() 
{ 
    std::string s = "hello"; 

    test(asio::buffer(s)); 
} 
+0

OK、とても基本的にネイティブデータを抽出し、それを反復処理します。 –

+0

@MupparthyRavindranathはい、 'const_buffer'はバイトの単一のバッファです。 'const_buffers_1'は、1つのバッファ(' end() 'が' begin()+ 1'に等しい)を含む 'ConstBufferSequence'コンセプトのモデルです。 'ConstBufferSequence'はN個の' const_buffer'のシーケンスです –

関連する問題