Kaskadowe łączenie strumieni w C++

0

Jak połączyć strumienie cout i ofstream fileOut aby dane trafiały jednocześnie (sekwencyjnie) do obu strumieni. Czy da się to zrobić inaczej niż przez tworzenie buforu?</i>

0

No to jednocześnie czy sekwencyjnie w końcu :D ??

string s;
//...
cout << s;
fileOut << s;

[diabel]

0

Ech... zapisywać jednocześnie pod dwa adresy pamięci, tudzież wywoływać jednocześnie dwa przerwania jest to nie lada sztuka... magiczna :D Ktoś zna poważną odpowiedź? ;)
Jeszcze raz. Czy da sie zapisac to lepiej:
cout << " balblabla " << /*int / i << " bla dalej bla " << / float */ f << endl;
outFile << " balblabla " << /*int / i << " bla dalej bla " << / float */ f << endl;

0

moze cos takiego:

#include <iostream>
#include <fstream>

using namespace std;
class Pisanko
{
 private:
  ostream &str1, &str2;
 public:
  Pisanko(ostream & str1, ostream &str2) : str1(str1), str2(str2) {}
  template <class Typ>Pisanko & operator<<(const Typ & t)
  {
    str1 << t;
    str2 << t;
    return *this;
  }
  ~Pisanko()
  {
    str1.flush();
    str2.flush();
  }
};

int main()
{
  ofstream plik("C:\\test.txt");
  Pisanko p(cout, plik);
  p << "ala " << 1 << " ola " << 2 << '\n';//bo siakas niejednoznacznosc przy endl
  p << "Koniec\n";
  cin.get();
  return 0;
}
0

Tak...
szopen: Ale po co tak robić?!

A błąd dla endl (i innych manipulatorów) jest dlatego, że operator<< nie zwraca strumienia, tylko Pisanko :P No to teraz zastanowienie... Nie, nie da się strumienia zwracać, no bo który?! Trzeba manipulatory zdefiniować...
Jak zwykle odpowiedzią jest to czego oczekujemy (jaki chcemy osiągnąć efekt)
:d

#include <sstream>
//...
ostringstream oss;
oss << " balblabla " << /*int */ i << " bla dalej bla " << /* float */ f << endl;
cout << oss.str();
plik << oss.str();
0

operator<< nie zwraca strumienia, tylko Pisanko :P

Hmm, z tego co wiem operator<< zwraca wlasie strumien na rzecz ktorego byl wywolany, wiec nie trzeba zadnego manipulatora pisac, i rozwiazanie jest spoko wg mnie.</quote>

0

operator<< nie zwraca strumienia, tylko Pisanko :P

Hmm, z tego co wiem operator<< zwraca wlasie strumien na rzecz ktorego byl wywolany, wiec nie trzeba zadnego manipulatora pisac, i rozwiazanie jest spoko wg mnie.
</quote>
Taaa... 0.03 PLN??

template <class Typ>Pisanko & operator<<(const Typ & t)

1 użytkowników online, w tym zalogowanych: 0, gości: 1