7.1 ASCII-Daten abspeichern und wieder einlesen
Hier noch einmal das Einleseprogramm aus dem vorangegangenen Kapitel. Jetzt wird allerdings erst nachgezählt, wieviele Zahlen im File vorhanden sind, bevor der notwedige Speicherplatz reserviert wird.
#include <iostream>
#include <fstream>
using namespace std;
int main(void)
{
string filename;
cout<<"Geben Sie einen Filenamen an:";
cin>>filename;
ifstream einlesen(filename.data());
if(einlesen)
{
char zeichenkette[200];
int* zahlen;
int anzahl = 0;
//Zählen der Elemente
while(einlesen >> zeichenkette)
anzahl++;
einlesen.close();
ifstream einlesen2(filename.data());
//Speicher reservieren
zahlen = new int[anzahl];
anzahl=0;
while(einlesen2 >> zeichenkette) //hoert bei Whitespaces auf zu lesen
{
zahlen[anzahl] = atoi(zeichenkette);
anzahl++;
}
einlesen2.close();
cout<<"Zahlen in "<<filename<<":"<<endl;
for(int i=0;i<anzahl;i++)
cout<<zahlen[i]<<" ";
//Speicher wieder freigeben.
delete[] zahlen;
}
else
cerr<<"Die Datei "<<filename<<" konnte nicht geoeffnet werden."<<endl;
return 0;
}
Code 7.1-1: lesen.cpp
teiler.cpp, lesen.cpp, primfaktoren.h, teiler.exe und lesen.exe - Datei gepackt