Hallo Leute.
Ich bin au ein weiteres Problemchen gestossen, was iostreams betrifft.
Gibt es eine Möglichkeit für den GCC, zwei streams zu swappen?
Wer nicht genau weiss was ich meine:
|
C-/C++-Quelltext
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
#include <iostream>
using std::ofstream;
using std::endl;
int main()
{
ofstream s1("Stream1.txt");
{
ofstream s2("Stream2.txt");
s1.swap(s2);
} //s2 wird zerstört, existiert also nicht mehr.
s1 << "Bla bla..." << endl; //Steht jetzt in Stream2.txt (Müsste zumindest ;) )
};
|
Dieses Beispiel funktioniert nur mit Visual Studio (2010).
Meine Frage ist nun:
Wie stelle ich das mit dem GCC an? Ist so etwas überhaupt möglich?
Ich habe schon x varianten ausprobiert:
|
C-/C++-Quelltext
|
1
2
3
|
streambuf *temp = s1.rdbuf();
s1.rdbuf(s2.rdbuf());
s2.rdbuf(temp);
|
Edit: Ich dumm. Da wird logischerweise keine Kopie vom Streambuffer erstellt. Kann also nicht funktionieren
Aber ändert nichts an meiner Frage oben.
Haben wir einen erfahrenen Linux programmierer zur hand, der sich damit auskennt?
Edit2: Das problem lässt sich wohl auf den streambuffer reduzieren. Wenn ich den
kopieren könnte, wäre mein problem gelöst.