Eine Wrapperklasse ist sozusagen ein objektorientierter Mantel um eine oder mehrere Funktion (wie deine Einstellungsfunktionen). Der Vorteil ist, dass Klasseninstanzen im Gegensatz zu Funktionen einen Zustand haben können, der durch die Membervariablen repräsentiert wird. So könntest du z.B. vermeiden, dass du bei jeder Änderung einer einzelnen Einstellung die komplette Datei neu schreiben musst.
Nein, damit meine ich, dass du auf fest im Code vorhandene Abhängigkeiten verzichten sollst. In deinem Code ist der Wert 6 fest mit der Einstellung "Write logfile" verbunden. Warum 6? Warum definierst du nicht eine Abbildung von Schlüsselwörtern auf Einstellungs-IDs? Dann würdest du auch nicht ins Straucheln kommen, wenn ein böser User die Reihenfolge der Zeilen in deiner Datei vertauscht.
std::stringstream ist ein Stream, wie z.B. cout oder die Filestreams, nur dass er nicht mit der Konsole oder Dateien arbeitet, sondern mit Strings im Speicher. Und mit str() bekommst du einen String, der alles beinhaltet, was du zuvor in den Stream geschoben hast.