Mit erstem Zeichen eines Strings arbeiten.



  • Hallo Luete,

    ich bin gerade dabei zu versuchen mit dem ersten Elements eines Strings zu arbeiten.Leider komm ich nicht an das erste ran.Ich habe folgende 2 Ansätze versucht :

    if(input_filename.front() = """" ) {...}
    

    und

    if(input_filename.at(0) == """") {...}
    

    Ich möchte herausfinden ob das erste Zeichen des Strings ein " ist, um es dann ggf. zu löschen oder den nächsten Arbeitsschritt einzuleiten.





  • Danke dachte mir schon so etwas in der Richtung müsste der Fehler sein, hatte es wie man sehen kann anders in Errinnerung.Danke für den Link, muss das Ganze wieder auffrischen.Andere Frage: gibt es da einen Performance Unterschied zwischen beiden Varianten oder ist eine ganze andere die bessere ?



  • Das eine ist ein Zeichen, das andere ein String bestehend aus zwei Zeichen, der bei der Ausführung des Programms Arbeitsspeicher einnimmt. Groß ist der Unterschied aber nicht, denke ich mal.



  • Ok also logisch daraus geschlossen gibt es einen kleinen Unterschied, aber kein gravierender Unterschied. Danke sehr schönen Abend noch.



  • Wenn du die erste Stelle eines Strings willst, kannst du auch so vergleichen:

    if (exampleString[0] == '"')
       // ...
    


  • BTW: """" ist in C++ das selbe wie "" "" , also die Verkettung zweier leerer Strings. Also selbst wieder ein leerer String.

    Wenn man nen String mit nem " drin will muss man "\"" schreiben.



  • (so, ist repariert.)
    Ergänzung:

    In C++ ist

    "abc" "def"
    

    gleich

    "abcdef"
    

    . Das erledigt der Präprozessor.
    Und "" "" ist folglich """" ist "".
    Will man ein " in einen String packen, dann geht das mit

    "\""
    

    . Das innere " wird mit

    \
    

    gequotet, zum " Zeichen " gemacht, statt das Ende des Strings anzuzeigen.

    In C++ ergibt eine Funktion, die ein einzelnes Zeichen aus einem Sting ausliest, einen char(Einzelzeichen). chars werden in ' eingeschlossen statt in " wie Strings. Also "abc"[1] gleich 'b'. Soweit noch klar.
    Aber jetzt wird es verrückt!

    "\""[0]
    

    gleich

    '"'
    

    .
    Sieht aus wie gekritzele in Perl. *hihi*

    In Basic ergibt eine FUnktion, die ein einzelnes Zeiuchen aus einem String ausliest, aber wieder einen String (mit nur einem Zeichen drin)!
    Mid$("abc",1,1) gleich "b".
    Und in vielen Basic-Dialekten kann ein " im STring als "" gequotet werden!

    Also in C++ ein

    "Das geheime Wort ist \"paternoster\"."
    

    wäre in Basic

    "Das geheime Wort ist ""paternoster""."
    

    .
    Entsprechend ist in Basic """" das, was man in C++ mit

    "\""
    

    meinen würde.

    Der Vorschlag

    if(input_filename.at(0) == """") {...}
    

    sagt also, daß Thors Viking von VB kommt und völlig logisch vorgegangen ist. Weiter so! Es gibt erstaunlich wenige Fallstricke in C++, wann man sich RAII anliest. C++ ist RAII.



  • Danke sehr, doch ich muss dir leider wieder sprechen 😉 Ich habe direkt mit C++ angefangen.Ich danke dir recht herzlich für deine sehr hilfreiche und umfassende Beschreibung.Danke an alle für eure Zeit die ich in Anspruch genommen habe.

    Mkg Thors Viking


Log in to reply