nicht Escapen
-
Hallo,
ich möchte einen String über die Kommandozeile einlesen, der formatiert ausgegeben werden soll. Das heißt wenn der Benutzer in seiner Eingabe ein "\n" verwendet, so soll dieses bei der Ausgabe auch als Zeilenumbruch gewertet werden, und nicht der Text "\n" ausgegeben. Hoffe man versteht was ich meine.
Gibt es eine einfache Möglichkeit dieses Problem zu beheben?
Gruß Paul
-
ja das ist möglich

guck dir den string an und such noch den sodnerzeichen die du ersetzen willst, schneid die alten raus und schieb die richtigen zeichen rein und gut ist
-
meinBenutzername schrieb:
Gibt es eine einfache Möglichkeit dieses Problem zu beheben?
Kommt drauf an was du unter "einfach" verstehst.
Es gibt keine fertige Standard-Funktion die das macht.
Es ist aber relativ einfach den nötigen Code selbst zu schreiben.Einfacher Ansatz für Escape-Sequenzen die auf Start-Zeichen plus genau ein weiteres Zeichen beschränkt sind:
std::string in = "test1\\n\\ttest2\\n"; std::string out; out.reserve(in.size()); bool escaped = false; for (size_t i = 0; i < in.size(); i++) { char const ch = in[i]; if (!escaped) { if (ch == '\\') escaped = true; else out += ch; } else { switch (ch) { case 'n': out += '\n'; break; case 't': out += '\t'; break; default: out += ch; break; } escaped = false; } }
-
Hi,
ja dachte da gäbe es einen Automatismus. Aber da das ja mit deinem Code auch so einfach funktioniert
DankeGruß Paul