mit istream in vector einlesen

Beichtpfarrer

Erfahrenes Mitglied
Ich hab mir gedacht, ich könnte mal, nachdem mich einige so dazu ermuntert haben, die STL zu benutzen, versuchen eines meiner kleinen Programme ohne sonst bei mir üblichen Eingabemethoden und -Buffer zu schreiben.
Also hab ich mir gedacht, versuch ich doch, sogar dazu noch einen Vector zu benutzen um vollkommen auf komfortable Technik zu vertrauen.

Leider wusste ich erstmal überhaupt nicht, wie anzufangen.Ein Beispiel, auf einer ergoogelten Seite führte mich zu folgendem Code:
Code:
	ifstream in("datei.txt",ios_base::binary);
	if(!in){
		//........
	}
	vector<int> data;
	copy(istream_iterator<int>(in),istream_iterator<int>(),back_inserter(data));
Leider weiss ich nicht, was ich includen muss, damit mir istream_iterator zur Verfügung steht, also kann ich diesen Code auch nicht Testen. In der Msdn konnte ich auch keine Info dazu finden und mit STL bin ich ziemlich unerfahren.
Ich vermute ausserdem, dass auf eine derartige Weise ausschlieslich String kovertiertes einlesen von Ints, nicht binäres, möglich ist. Wie könnte eine binäre Einlesung aussehen, wer kann mir eine gute STL-Seite empfehlen?
 
versuchs mal mit folgenden:
Code:
#include <fstream>
#include <iostream>
#include <istream>

achja - evtl hilft auch
Code:
using namespace std;
 
Hi,

Code:
#include <iterator>

sollte es tun...

Ausserdem wenn du ne API Referenz brauchst schau bitte direkt bei sgi's stl nach die is eigentlich sehr
gut, mit Beispielen etc...

Desweiteren was spricht gegen das binäre einlesen in deinem Beispiel, so wie es aussieht
sollte das doch klappen...

Gruß

RedWing
 
Also das Include-Problem hab ich jetz selbst gelöst (try and error prinzip)
#include<iterator>
hat gefehlt.

Zum Binär einlesen: da hab ich jetz auch eine akzeptable Variante gefunden (Klasse erstellt und operator>> überladen).

Huch, da war jemand schneller :-)
Ich denke nicht, dass es so tut (habs aber noch nicht ausprobieren können).
Ich denke, operator>>(istream,int) wird benutzt zum einlesen.
Und der interpretiert nunmal Zeichenketten.
 
Ja aber in deinem Beispiel ließt du ja in integer ein,
und der operator>> ist sowohl für integer als auch für strings als auch
für doubles etc schon defaultmäßig überladen...
siehe

Gruß

RedWing
 
Ja, ist standardmässig für verschiedene Typen überladen.
Allerdings ließt er nicht 4 Bytes aus einer Datei einfach in einen Int ein, was ich erreichen möchte, sondern eine Zeichenkette, die er als numerischen Wert interpretiert.
Also -> operator>> für eine eigene Klasse überladen und mit basic_istream::read 4 bytes einlesen.
 
Zurück