kramann.info
© Guido Kramann

Login: Passwort:










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