c++: 'char' und Backslash....

xenayoo

xenayoo

Aktives Mitglied
Thread Starter
Dabei seit
29.02.2004
Beiträge
2.126
Reaktionspunkte
6
Ich arbeite mich gerade in C++ ein. Bei meinen Übungsaufgaben taucht nun folgende Frage auf:

Warum ist es bei der Eingabe sinvoll den Backslash zu verwenden?

Nun habe ich gegoogelt und nichts gefunden, und - ja, ich habe auch in c++ Foren mein Glück versucht. Bloß bei c++.de findet sich eh nie was und bei cplusplus-forum.de habe ich derartige Browserprobleme, dass ich ebenfalls nie ein Suchergebnis erhalte. Ich weiß, dass man mit Backslash verschiedene Sonderzeichen einleitet. Das war aber auch schon alles. Gibt es irgend eine besondere Funktion des Backslash im Zusammenhang mit char?
 
ein bisschen mehr Infos wären nicht schlecht...
bei welcher Eingabe, ... ?

greetz,
MattMacs
 
xenayoo schrieb:
Warum ist es bei der Eingabe sinvoll den Backslash zu verwenden?

Hmm... irgendwie scheint mir die Frage nur im Zusammenhang Sinn zu machen. Spontan fällt mir nur ein, dass mit einem Backslash Escape-Sequenzen eingeleitet werden. (Sowas wie \n oder \")
 
MattMacs schrieb:
ein bisschen mehr Infos wären nicht schlecht...
bei welcher Eingabe, ... ?

greetz,
MattMacs
Ich würde ja gerne mehr Infos geben, aber mehr als die fett gedruckte Frage steht da net. Kann es sein, dass es da in VC++ eventuell eine Besonderheit gibt. Diese Frage stammt aus einem Fragenkatalog, um mein Wissensstand in C++ zu sondieren (nicht für eine Bewerbung sondern um weiter zu lernen). Jedoch weiß ich, dass der Fragensteller mit VC++ arbeitet. Die Frage wird im Bereich der verschiedenen Variablentypen, deren Attribute sowie deren binäre Verarbeitung gestellt.
 
*-jalapeno-* schrieb:
Hmm... irgendwie scheint mir die Frage nur im Zusammenhang Sinn zu machen. Spontan fällt mir nur ein, dass mit einem Backslash Escape-Sequenzen eingeleitet werden. (Sowas wie \n oder \")
Ja, das hab ich mir auch gedacht. Aber: Kann man mit ESC-Sequenzen irgendetwas besonderes anfangen?
 
Ne ganze Menge!

printf("Hallo Welt\n\r");

oder eben

cout << "Hallo Welt\n\r"; // bei der Syntax bin ich mir nicht mehr ganz sicher...

erzeugt nen Zeilenumbruch ( sowohl Win als auch Mac). Daher werden diese zeichen mit \ maskiert. Ähnliches gilt für Anführungszeichen innerhalb von Strings, bei Druckern kann man noch lustigere Dinge mit ESC-Sequenzen machen. Dafür müssen diese zeichen halt ESCaped werden. Dies geschieht mit \.
Auch wenn MS vieles anders macht, auf den C++-Standard haben sie m.W. bisher wenig Einfluß. Mehr kann ich zu dem Thema nicht beitragen.
 
Unter C++ bietet der Backslash diverse Funktionen - und ist ein wichtiger Bestandteil um Zeichen/Syntax-Fehler zu vermeiden.

\n erzeugt eine neue Zeile (n = new line). Sprich: Nach dem \n wird der folgende Text in ner neuen Zeile ausgegeben.
Beispiel:

cout << "Hallo, dies ist ein Testprogramm.\n Viel Spaß damit.";


Ergibt:
Hallo, dies ist ein Testprogramm.
Viel Spaß damit.


Vorteil: Man muss nicht jede Zeile neu ansetzen oder mit endl; beenden.
Nachteil: Wird bei komplexerem Quellcode unübersichtlich ;)

\" erzeugt z.B. ein Anführungszeichen.
Vorteil: Will man nun ein Anführungszeichen darstellen und tippt dies einfach in eine cout-Ausgabe ein, so kann es passieren, dass der Compiler den darauffolgenden Text weglässt, weil er denkt, die Funktion sei zu Ende.

Also ist

cout << "Peter sagte:\"Hallo du da\" und freute sich.";


besser als

cout << "Peter sagte:"Hallo du da" und freute sich.";
 
Das ist ja alle schön und gut, aber bei der Frage geht es um die EINGABE, nicht um die Ausgabe. Da liegt ja der Hund begraben. ;)
 
@jalapeno: das sind so die kleinen dezenten Hinweise, die man noch einen Moment nachzittern lassen sollte ;) wie Recht Du doch hast! Hab ich glatt überlesen :(
 
Die Frage, warum es bei der Eingabe sinnvoll ist, den Backslash zu verwenden ist meiner Meinung nach ... :)
Also ich versteh die nicht, das wollt ich ausdruecken.
Ich kann mir nur vorstellen, dass der Backslash so eine Art Praefixcode ist, so wie eine Telefonnummer halt.
Aber ehrlich gesagt, hab ich noch kein Programm geschrieben, dass als Eingabe den Backslash braucht oder aehnliches ? Ihr vielleicht?
Daher versteh ich die Frage gar nicht!
grind
 
Zumindest in Quelltext kann man damit sagen, dass die Zeile weitergehen soll:

printf ("Sagen wir mal, \
das wäre eine ganz, ganz lange Zeile \
aber ich will sie in %d Zeile haben", 1);

Das geht vielleicht auch bei der Eingabe.

Bekomme ich jetzt Geld von Dir :D ?

Gruss

Alex
 
below schrieb:
Zumindest in Quelltext kann man damit sagen, dass die Zeile weitergehen soll:

printf ("Sagen wir mal, \
das wäre eine ganz, ganz lange Zeile \
aber ich will sie in %d Zeile haben", 1);

Das geht vielleicht auch bei der Eingabe.

Bekomme ich jetzt Geld von Dir :D ?

Gruss

Alex
Hm, so in etwa hab ich mir das auch gedacht. Zu DOS 5.0 Zeiten hab ich noch Druckertreiber für Dos-Programme zusammengestellt. Daher weiß ich, was man mit Steuerzeichen so alles anstellen kann. Deshalb halte ich das eigentlich nicht für etwas außergewöhnliches..... Aber gut.... :)
 
below schrieb:
Zumindest in Quelltext kann man damit sagen, dass die Zeile weitergehen soll:

printf ("Sagen wir mal, \
das wäre eine ganz, ganz lange Zeile \
aber ich will sie in %d Zeile haben", 1);

Das geht vielleicht auch bei der Eingabe.

Bekomme ich jetzt Geld von Dir :D ?

Gruss

Alex

Sobald ich aber bei der Eingabe Enter drücke ist die Eingabe zu Ende. Da kann ich noch so viele Backslashes machen. Es sei denn ich baue das in meinen Programm explizit ein.

Man könnte natürlich auch sagen, es ist sinnvoll bei der Eingabe Backslashes zu verwenden, wenn ich einen Backslash wirklich als Zeichen brauche und nicht als Einleitung einer Esc-Sequenz. Zum Beispiel bei Pfadangaben: C:\\Windows\\System\\Dings\\abc.txt

Aber dann müsste die Frage eher heißen "WANN ist es sinnvoll...?" und nicht "Warum ist es sinnvoll...?"

[edit] Öhm... mal was anderes. Ist mit "Eingabe" vielleicht garnicht die Benutzereingabe, sondern das eintippen des Quelltextes gemeint? Dann wäre das Problem ja schon geklärt. :p
 
Zuletzt bearbeitet:
Zurück
Oben Unten