Ich möchte streams in meinem Code als ihre Standardäquivalente offenlegen, um die Benutzerabhängigkeit von boost::iostreams
zu eliminieren. Möchten Sie dies natürlich effizient tun, ohne eine Kopie zu erstellen, falls erforderlich. Ich dachte darüber nach, nur den std::istream
Puffer auf den zu setzen, der von verwendet wird, dies könnte jedoch Besitzprobleme verursachen. Wie konvertiert man boost::iostream
in std::iostream
? Insbesondere boost::iostream::stream<boost::iostreams::source>
bis std::istream
.convert boost :: iostream :: stream <boost :: iostreams :: source> zu std :: istream
1
A
Antwort
2
keine Konvertierung erforderlich:
#include <iostream>
#include <boost/iostreams/stream.hpp>
#include <boost/iostreams/device/array.hpp>
namespace io = boost::iostreams;
void foo(std::istream& is) {
std::string line;
while (getline(is, line)) {
std::cout << " * '" << line << "'\n";
}
}
int main() {
char buf[] = "hello world\nbye world";
io::array_source source(buf, strlen(buf));
io::stream<io::array_source> is(source);
foo(is);
}
Andere, als dass ich glaube nicht, Sie Eigentumsfragen haben könnte, da std::istream
nicht Besitz übernimmt, wenn eine neue zugewiesen rdbuf:
Sie sind also auch frei, zu tun:
std::istream wrap(is.rdbuf());
foo(wrap);
Drucken der gleichen
Verwandte Themen
- 1. gnuplot-iostream nicht Verknüpfung zu Boost
- 2. Boost iostreams Kompilierungsfehler
- 3. Wie erstelle ich einen Boost ssl iostream?
- 4. mit einem boost :: iostreams :: array_sink mit einem boost :: array <char, n>
- 5. How to Streaming Dekomprimieren mit Boost Iostreams
- 6. Mehrere Dateien pro Verbindung mit Boost Iostream senden
- 7. Boost :: Asio :: Ip :: Tcp :: Iostream Fragen
- 8. QT Linker Fehler mit Boost Iostreams
- 9. extrahiert komprimierte Datei mit boost :: iostreams
- 10. iostream GCC-Fehler, Konvertierung in boost :: filesystem :: iostream für Windows
- 11. Boost-IO-Stream und ZLib beschleunigen
- 12. Warnmeldung RTTI-Symbol nicht gefunden, wenn boost :: iostreams verwendet
- 13. boost :: Variante <T> std :: string
- 14. boost :: bind und std ::
- 15. Verwenden von Boost-Iostreams-Filtern (schließen und nicht kopierbar)
- 16. Boost asio ip tcp iostream Fehlererkennung
- 17. C++ Iostreams und Python
- 18. Boost initialisieren :: shared_ptr <std :: vector <T>> mit boost :: shared_ptr <std::list<T>>
- 19. Was ist der Unterschied zwischen std :: to_string, boost :: to_string und boost :: lexical_cast <std::string>?
- 20. boost :: lambda std :: map
- 21. Kopieren boost :: array <char> zu std :: string
- 22. Boost-Bibliotheksformat; immer std :: string
- 23. Convert tm Struktur zu boost :: local_time :: local_date_time
- 24. Boost binary_oarchive funktioniert für verschiedene Compiler unterschiedlich
- 25. Datei kann nicht geöffnet mit boost :: iostreams :: Datei
- 26. Convert ifstream in istream
- 27. Boost Any to Boost Variante mit Boost Preprocessor
- 28. Konvertieren std :: Paar Iteratoren zu boost :: iterator_range
- 29. Konvertieren std :: string zu boost :: asio :: streambuf
- 30. boost :: python: Python-Liste zu std :: vector