Ich versuche, den folgenden Bash-Code mit boost :: iostreams in C ++ zu konvertieren:
%Vor%Ich kann eine Datei öffnen und sie dekomprimieren:
%Vor%Öffnen Sie eine unkomprimierte Datei:
%Vor%Jetzt bin ich ein bisschen fest, also hier sind meine Fragen:
1) Was ist die boost :: iostreams Lösung, um die beiden Streams zu verbinden?
2) Wie gebe ich das Ergebnis über einen Regex-Filter aus, um grep / sed zu emulieren?
Als Ergebnis möchte ich einen iStream haben, den ich nach cout kopieren kann:
%Vor%UPDATE Komplette Lösung mit Hamigakis Verkettung :
%Vor%1) Ich weiß nicht, ob etwas in Boost eingebaut ist, aber diese Klasse scheint genau das zu sein, was Sie wollen: Ссылка
Der Haken hier ist, dass CopyConstructible-Geräte verketten und Chains nicht CopyConstructible zu sein scheinen. Mit boost :: ref können wir das jedoch problemlos umgehen. Dieser Code tut (fast) das, was ich verstanden habe, du fragst:
%Vor%Ich habe gerade den Regex-Filter anstelle von gzip zum Testen verwendet.
2) boost :: iostreams hat einen Regex-Filter: Ссылка
EDIT: Sie scheinen, dass das jetzt funktioniert.
1) In Boost nicht verfügbar
Hamigakis 'Verkettung klingt interessant, aber ich konnte nicht herausfinden, wie man es benutzt um zwei boost :: iostreams :: chain zu kombinieren. Der Code erwähnt, dass es für "Verkettung von Geräten" gedacht ist, also könnte es nicht für Ketten verwendbar sein. Bitte korrigiere mich, wenn ich falsch liege.
BEARBEITEN: hat meine Frage mit der vollständigen Lösung aktualisiert.
2a) grep-Verhalten (Filter):
%Vor%2b) sed-Verhalten (suchen / ersetzen):
%Vor%Tags und Links c++ bash boost boost-regex boost-iostreams