2011-07-16 21 views
1

アレイデバイスベースのストリームを使用してストリームをstd::ostream_iteratorまたはstd::istream_iteratorに渡そうとしましたが、残念ながらgcc 4.3.5でコンパイルエラーが発生します。std :: ostream_iteratorでboost IOStreamsを使用

ブースト::入出力ストリームのドキュメントでは、io::streamは、いずれかの基本的なデバイスカテゴリに依存std::basic_istreamまたはstd::basic_ostreamまたは両方(std::basic_iostream)に由来していると述べています。配列のデバイスにシーク可能なカテゴリがあるので、私はio :: streamがstd::basic_iostreamから派生し、std::ostream_iteratorまたはstd::istream_iteratorと互換性があると期待しています。しかし、残念ながらコンパイルエラーが発生します。

namespace io=boost::io; 

typedef unsigned char byte; 
typedef io::basic_array<byte> array_device; 
typedef io::stream<array_device> array_stream; 

byte my_buffer[256]={}; 

array_stream ios_(my_buffer); 

std::istream_iterator<byte> in(ios_); 

と示すエラーの最後の行の結果:ここで

は、コードスニペットであるあなたが std::istream_iteratorのための十分なテンプレート引数を供給していない

src/my_file.cpp: In member function 'void my_test_class::ctor::test_method()': 
src/my_file.cpp:86: error: no matching function for call to 
'std::istream_iterator<unsigned char, char, std::char_traits<char>, int>::istream_iterator(my_test_class::<unnamed>::array_stream&)' 

答えて

3

- 2番目の引数がありますストリームの基になる文字型。デフォルトはcharですが、ストリームの基になる文字型はbyteunsigned char)です。

std::istream_iterator<byte, byte> in(ios_); 

std::istream_iterator<byte> in(ios_); 

を変更すると、動作するはずです。

+0

ありがとうございます!ご協力いただき誠にありがとうございます!私は何とかそれを見落とした! – ovanes

関連する問題