Hemos creado y llenado algunos std::vector<uchar>
con openCV imencode
por ejemplo. Ahora queremos transmitirlo, por ejemplo, a http_lib que puede tomar algún tipo de ostream (ostringstream) por ejemplo, o solo queremos guardarlo mientras depuramos nuestro programa con ofstream. Entonces me pregunto cómo poner std::vector<uchar>
en std::ostream
?Cómo guardar `std :: vector <uchar>` en `std :: ostream`?
Respuesta
Uso write
:
void send_data(std::ostream & o, const std::vector<uchar> & v)
{
o.write(reinterpret_cast<const char*>(v.data()), v.size());
}
El ostream espera desnudos char
s, pero está bien para tratar uchars como las de fundición ese puntero. En los compiladores más antiguos puede que tenga que decir &v[0]
en lugar de v.data()
.
Puede devolver el resultado de write()
como otro std::ostream&
o como bool
si desea algunas funciones de comprobación de errores.
+10 Por tomar la probabilidad probable de que un compilador que no sea C++ 11 tenga en cuenta. Y +1 para la respuesta real, por supuesto. –
@ChristianRau: Supongo que fue un +10 binario :-) –
Dependiendo de cómo desea que la salida formateada, es posible que pueda utilizar en conjunción con copy
ostream_iterator
:
#include <iterator>
/*...*/
copy(v.begin(), v.end(), ostream_iterator<uchar>(my_stream,""));
- 1. std :: vector <std::string> crash
- 2. Cómo heredar de std :: ostream?
- 3. Soporte para const_string en el operador std :: ostream <<
- 4. Convierte std :: string en std :: vector <char>
- 5. Cómo "fundido" un std :: vector <char> std :: vector <wchar_t>
- 6. Ordenar un std :: vector <std :: pair <std :: string, bool >> por la cadena?
- 7. std :: vector versus std :: array en C++
- 8. Cómo exportar std :: vector
- 9. vector de std :: función <>
- 10. std :: vector de std :: vectores de contigüidad
- 11. std :: move entre std :: string y std :: vector <unsigned char>
- 12. std :: list vs std :: vector iteration
- 13. C++ std :: pair, std :: vector y memcopy
- 14. std :: merge fusionando dos std :: vector coredump
- 15. std :: vector y std :: comportamiento min
- 16. ¿Puede un std :: vector ser = 'd a otro std :: vector?
- 17. std :: vector de funciones
- 18. En la declaración "std :: vector <X> f();", ¿es "std :: vector <X>" una instanciación?
- 19. ¿Cómo funciona C++ std :: vector?
- 20. Obtener un std :: ostream ya sea desde std :: cout o std :: ofstream (archivo)
- 21. Asignador personalizado en std :: vector
- 22. Implementando un no-op std :: ostream
- 23. std :: vector insert() reasignación
- 24. Iterar std :: vector múltiple
- 25. WLEpping FILE * con personalizado std :: ostream
- 26. sizeof() std :: vector (C++)
- 27. ¿Puedo lanzar std :: vector <Animal*> a std :: vector <Dog*> sin mirar cada elemento?
- 28. Convertir std :: vector en matriz
- 29. ¿Cómo puedo construir un archivo std :: vector <std::string> y luego ordenarlos?
- 30. Convierte un std :: vector <std :: vector <double>> representa una matriz 2D a cv :: Mat
Probablemente por iteración los elementos de transmisión y cada uno en forma individual. –