C++: stream

– alle Daten werden zu chars
– In:
bedeutet von aussen zur CPU.
– out:
bedeutet von OS nach aussen
————————————————————————————-

istream

char Daten werden übergeben

ostream
sendet chars an eine Ort (file, konsole, speicher, ..)

ifstream  [Daten in File ablegen]
– Datei als String mitgeben
ifstream stream_a {„input.txt“}
– Inhalt wortweise in String ablegen string temp
– Strings in Vektor speichern   vector <string> input

while (stream_a >> temp) {      
        // fill vector
        input.push_back(temp);
    }


ofstream
[ lesen von einem file (wird als stream gemacht)]

cout << "Name of output file"
string name_outputfile;
cin >> name_outputfile;

ostream stream_1 {name_outputfile};
if (! stream_1) error("Konnte nicht eingelesen werden.");

 

strukturiert einlesen

struct Inputdata {
    int hour;
    double temperature; 
};
cout << "Please enter input file name: ";
    string name_inputfile;
    cin >> name_inputfile;
    ifstream ist {name_inputfile};
    if (!ist) throw ios_base::failure("can't open input file "+name_inputfile);
vector<Inputdata> temps; // structured vector
    int hour;
    double temperature;

    // read structured in
    while (ist >> hour >> temperature) {
        if (hour < 0 || 23 <hour) throw range_error("hour out of range");
        // fill vector
        temps.push_back(Inputdata{hour,temperature});
    }

 

strucktruriert ausgeben

// set brackets for clearer structure
    for (int i=0; i<input.size(); ++i)
        ost << '(' << input[i].hour << ','
            << input[i].temperature << ")\n";