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
![;)](wcf/images/smilies/wink.png.pagespeed.ce.L9LRa_F2a5.png)
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.