G
Der Formatspezifizierer "%S" gehört nicht zum Standard, iirc ist das eine MS Erweiterung (wenn auch mittlerweile unnötig). "%S" sorgt bei printf/scanf Funktionen, dass wide character Strings gehandelt werden, entsprechend bei wprintf/wscanf Funktionen single-byte character Strings. Da std::string aber nunmal single-byte ist (char), machst du etwas, was nicht funktionieren kann.
Das ist wieder mal ein schönes Beispiel dafür, dass man als C++ Programmierer auf printf/scanf verzichten sollte. Sie sind halt nicht typsicher. Mit cin wäre sowas nicht passiert.
edit:
Oh mann, beim zweiten Hinsehen fallen mir ja noch ganz andere Fehler auf.
user ist lediglich ein Zeichen, dh du darfst auch nur ein Zeichen darin einlesen und keinen ganzen String (wiederum Thema Typsicherheit). host ist ein Zeiger auf einen String, der wurde aber nie initialisiert UB. &host ist vom Typ string**, das macht an betreffender Stelle nicht wirklich Sinn (und nochmal Thema Typsicherheit).
Und nochwas, getch() nach return? Ich denke, das ist wohl umgekehrt richtiger.