wie man Bash-Skript mit boost :: iostreams nach C ++ konvertiert

9

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%     
chris 21.02.2011, 22:34
quelle

2 Antworten

3

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.

    
Pablo 22.02.2011, 01:20
quelle
0

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%     
chris 22.02.2011 15:31
quelle