たとえば、std::vector<uchar>
の一部を作成してopenCV imencode
と入力しました。今度は、例えばhttp_libにストリームを流して、ある種のostream(ostringstream)を流すことができます。または、ofstreamでプログラムをデバッグするときに保存したいだけです。だから私はどのようにstd::vector<uchar>
をstd::ostream
に入れるのだろうか?`std :: vector <uchar>`を `std :: ostream`に保存するには?
5
A
答えて
11
使用write
は:
void send_data(std::ostream & o, const std::vector<uchar> & v)
{
o.write(reinterpret_cast<const char*>(v.data()), v.size());
}
のostreamは裸char
のを期待していますが、それはそのポインタをキャストしているようなucharsを治療するための罰金です。古いコンパイラでは、v.data()
の代わりに&v[0]
と言う必要があります。
エラーチェック機能をご希望の場合は、の結果をstd::ostream&
またはbool
として返信することができます。
+0
+10非C++ 11コンパイラの可能性を考慮するため。もちろん、実際の答えは+1です。 –
+1
@ChristianRau:私はバイナリ+10 :-)だった –
1
あなたは、出力をフォーマットする方法に応じて、あなたはostream_iterator
と一緒にcopy
を使用することができるかもしれない:
#include <iterator>
/*...*/
copy(v.begin(), v.end(), ostream_iterator<uchar>(my_stream,""));
関連する問題
- 1. なぜ `std :: common_type_t <std :: ostream&、std :: ostream&>`は `std :: ostream`ではなく` std :: ostream`と同じですか?
- 2. std :: operator <<とstd :: ostream :: operator <<
- 3. C++のstd :: vectorをstd :: vector <unsigned char>に変換する
- 4. std :: vector <std::string>クラッシュ
- 5. std :: shared_ptr <std :: vector <double>>
- 6. std :: shared_ptr << std :: vector <double>>を関数に渡す
- 7. なぜstd :: sortはstd :: vector <std :: vector <int>>をデフォルトでstd :: vectorにすると、間違った結果になるのですか?
- 8. std :: vector <std :: vector <int>> push_backによりヒープバッファオーバーフローが発生する
- 9. エラー2664 - std :: vector <...>をstd :: tr1 :: shared_ptr
- 10. std :: vector <std :: pair <const K, V> *> to std :: vector <std :: pair <const K, V>>
- 11. 'std :: vector <std :: basic_string <char>> *'から 'const std :: vector <std :: basic_string <char>>&'
- 12. `std :: vector <std :: uint8_t>の高速コピー
- 13. std :: vectorへのstd :: normal_distributionをstd :: vectorに格納するためにバインドする
- 14. std :: vectorをstd :: valarrayに代入する
- 15. std :: vectorデータの保存と復元
- 16. std :: vectorから要素を移動する<T1>からstd :: vector <std :: pair <T1,T2>>
- 17. std :: unique()をstd :: vectorで使用する<std :: unordered_set <T>>
- 18. C++ - "std :: vector <unsigned char>"の内容をファイルに保存する
- 19. std :: unordered_map <std :: string、std :: vector <int>>のベクトルをコピーせずに更新するには?
- 20. std :: vectorのメモリレイアウト<__m128i>
- 21. std :: std :: stringとstd :: vectorの間の移動<unsigned char>
- 22. は 'std :: ostream {aka std :: basic_ostream <char>}' lvalueを 'std :: basic_ostream <char> &&'にバインドできません。
- 23. C++演算子<< std :: ostreamの代わりにostreamを呼び出す
- 24. std :: ostreamとstd :: coutを使ったロギング
- 25. std :: arrayをstd :: vectorに変換するには?
- 26. boost :: variant <std :: vector <int>、std :: vector <String>>を反復処理する方法は?
- 27. は、<<のstd演算子のオーバーロード:: ostreamに
- 28. R :: vector to std :: vector
- 29. boost :: interprocess - std :: string vs std :: vector
- 30. std :: arrayの動作<bool>とstd :: vector <bool>
おそらく要素を反復し、個別に各1をストリーミングすることによって。 –