warum \ in strings zu \\ wird



  • ok, ich versuchs mal zu erklären:

    char *chPath="C:\\File.txt";
    char chUserPath[15]="";
    cin >> chUserPath;
    cout << chPath << "\n" << chUserPath;
    

    wenn der user jetzt "C:\File.txt" eingibt, dann sieht die ausgabe wie folgt aus:

    C:\File.txt
    C:\File.txt

    der doppelte backslash wird also bei der ausgabe zu einem einfachen.

    Frage:
    aber wieso kann man dann in seinem code nicht auch einfach nen einfachen backslash eingeben, sondern muss einen doppelten eingeben?

    Antwort:
    das ist so, weil ein einfacher backslash in deinem code eine escape-sequenz einleitet. wenn man jetzt statt:

    char *chPath="C:\\File.txt";
    

    folgendes:

    char *chPath="C:\File.txt";
    

    eingeben würde, würde man folgende Warnung beim kompilieren erhalten:

    warning C4129: 'F' : Nicht erkannte Folge von Escape-Zeichen

    und der kompiler würde den backslash einfach ignorieren.

    ich hoffe das war jetzt verständlich erklärt images/smiles/icon_smile.gif

    Bitte in die FAQ, wenns ok ist images/smiles/icon_smile.gif


Anmelden zum Antworten