Örneğin 'u openCV imencode
ile oluşturduk ve doldurduk. Şimdi, örneğin, örneğin bir çeşit ostream (ostringstream) gibi bazı http_lib dosyalarına akıtmak isteriz, ya da programımızın akış yönü ile hata ayıklama yaparken sadece kaydetmek isteriz. std::vector<uchar>
'un std::ostream
'a nasıl konacağını merak ediyorum?std :: vector <uchar> `std :: ostream` içine nasıl kaydedilir?
cevap
Kullanım write
:
void send_data(std::ostream & o, const std::vector<uchar> & v)
{
o.write(reinterpret_cast<const char*>(v.data()), v.size());
}
ostream çıplak char
s beklediğini, ancak bu işaretçi döküm ile olanlar gibi uchars tedavi etmek iyi olur. Eski derleyicilerde v.data()
yerine &v[0]
demeniz gerekebilir.
Bazı hata denetleme olanaklarını isterseniz write()
sonucunu std::ostream&
veya olarak döndürebilirsiniz.
+10 C++ olmayan bir derleyicinin olasılığını dikkate almak için. Ve gerçek cevap için +1, elbette. –
@ChristianRau: Bunu bir ikili +10 :-) aldım –
çıkış biçimlendirilmiş istiyorum nasıl bağlı olarak, ostream_iterator
birlikte copy
kullanmak mümkün olabilir:
#include <iterator>
/*...*/
copy(v.begin(), v.end(), ostream_iterator<uchar>(my_stream,""));
Muhtemelen elemanları yineleme ve ayrı ayrı her birini akışı ile. –