Nous avons créé et rempli certains std::vector<uchar>
avec openCV imencode
par exemple. Maintenant, nous voulons le streamer par exemple dans un http_lib qui peut prendre une sorte de ostream (ostringstream) par exemple, ou nous voulons juste sauvegarder pendant que nous débugons notre programme avec ofstream. Donc, je me demande comment mettre std::vector<uchar>
dans std::ostream
?Comment enregistrer `std :: vector <uchar>` dans `std :: ostream`?
Répondre
Utilisation write
:
void send_data(std::ostream & o, const std::vector<uchar> & v)
{
o.write(reinterpret_cast<const char*>(v.data()), v.size());
}
Le ostream attend char
nu s, mais il est bien de traiter uchars comme ceux en lançant ce pointeur. Sur les compilateurs plus anciens, vous devrez peut-être dire &v[0]
au lieu de v.data()
.
Vous pouvez renvoyer le résultat de write()
comme autre std::ostream&
ou bool
si vous souhaitez bénéficier d'un service de vérification des erreurs.
+10 Pour prendre en compte les chances probables d'un compilateur non-C++ 11. Et +1 pour la réponse réelle, bien sûr. –
@ChristianRau: Je suppose que c'était un binaire +10 :-) –
Selon la façon dont vous voulez que la sortie formatée, vous pourriez être en mesure d'utiliser copy
conjointement avec ostream_iterator
:
#include <iterator>
/*...*/
copy(v.begin(), v.end(), ostream_iterator<uchar>(my_stream,""));
- 1. std :: vector <std::string> crash
- 2. std :: trier sur std :: vector <std::string>
- 3. Comment accéder au Nième élément d'un 2d std :: vector (`std :: vector <std :: vector <T>>`)?
- 4. << Surcharger opérateur pour std :: ostream
- 5. std :: ostream & opérateur << (std :: ostream &, const T &) ne pas être surchargé
- 6. Surcharge ambiguë de std :: ostream & opérateur << (std :: ostream & sstr, const T & val)
- 7. Supprimer l'élément de std :: vector <std::string>>
- 8. inherit std :: ostream
- 9. Comment hériter de std :: ostream?
- 10. Char * de std :: vector <char>
- 11. std :: list vs std :: vector itération
- 12. std :: déplacer entre std :: string et std :: vector <unsigned char>
- 13. posix_memalign pour std :: vector
- 14. Enumérer les const T & dans un std :: vector <std :: unique_ptr <T>>
- 15. "Constante forcée" dans std :: map <std :: vector <int>, double>>?
- 16. Problème avec std :: vector
- 17. Mauvais constructeur std :: vector
- 18. itérer std :: vecteur <std :: vecteur <char>>?
- 19. Prenant l'argument && dans std :: vector push_back() et std :: operator carte []
- 20. copier depuis un std :: istreambuf_iterator <> vers un std :: vector <>
- 21. boost :: ptr_vector par rapport à std :: vector <std :: unique_ptr <T>>?
- 22. Comment std :: vector dans XCode + C++?
- 23. CLI. Comment convertir std :: vector <wchar_t> à System.String ^?
- 24. erreur C2440: 'initialisation': impossible de convertir de 'std :: vector <_Ty>' à 'const std :: vector <_Ty> & `
- 25. wrap std :: vector <pointer*> dans boost.python
- 26. boost :: rogne chaque chaîne dans std :: vector <std::string>
- 27. Comment mapper 2 tableaux char * directement dans std :: map <std :: string, std :: string>
- 28. Deuxième argument de std :: vector
- 29. Convertir NSDictionary en std :: vector
- 30. Convertir std :: vector en tableau
probablement par les éléments itérer et le streaming chacun dans individuellement. –