#include <print>
#include <fstream>
#include <sstream>
#include <string>

using namespace std::string_literals; // Suffix s fuer string einblenden

// Konstante für Dateiname
const auto FILENAME = "../../04_Data/adresse.csv"s;

// main() Funktion
int main()
{
    // Eingabedatei öffnen
    std::ifstream inFile;
    inFile.open(FILENAME);
    if (!inFile)
    {
        std::println("Datei {} kann nicht geoeffnet werden!", FILENAME);
        exit(1);
    }

    // Komplette Datei bearbeiten
    do
    {
        // Zeile aus der Datei
        std::string line;
        // Zu extrahierende Daten aus der Dateizeile
        std::string firstname, lastname, email;
        // Konvertierungsstream
        std::istringstream is;

        // Zeile einlesen
        // Bei erreichen des Dateiendes den Rest überspringen
        if (getline(inFile, line); !inFile.eof())
        {
            // Eingelesene Zeile in Konvertierungsstream übertragen
            is.str(line);
            // Nun Name und Email-Adresse aus der Zeile extrahieren
            getline(is, firstname, ';');
            getline(is, lastname, ';');
            getline(is, email, ';');
            // und ausgeben
            std::println("Name: {} {}, E-Mail: {}",
                firstname, lastname, email);
        }
    } while (!inFile.eof());

    // Datei wieder schliessen
    inFile.close();
}
