Anzeige:
Ergebnis 1 bis 6 von 6

Thema: Frage zu den String-Funktionen von c++

  1. #1
    Registrierter Benutzer
    Registriert seit
    01.06.2007
    Beiträge
    9

    Frage zu den String-Funktionen von c++

    Hallo Leute!

    Ich habe einen string.
    Davon möchte ich herausfinden, ob das letzte zeichen ein \ ist. wie geht das.?
    dann möchte ich alle / zu \ ersetzen.

    Das ist für WINDOWS:

  2. #2
    Registrierter Benutzer
    Registriert seit
    21.03.2007
    Beiträge
    36
    Da gibt's doch sicher irgendwelche Methoden und Funktionen die dich per regulaerem Ausdruck (regular Expression, RegEx) an dein Ziel bringen?
    Kenn mich zwar mit C++ nicht so aus aber das waere jetzt mal zumindest mein Tipp fuer die naechste Google Suche...

  3. #3
    Donnerfalke
    Gast
    Guten Abend,
    erstmal hallo an alle. Ist mein erster Beitrag hier

    Du kannst unter C++ auf einen String wie auf ein Array zugreifen. Du musst also nur wissen wie lang der String ist. Das findest du mit string.length() heraus. Dann kannst du mit beispielsweise
    Code:
    if(string[string.length()-1) == '\\')
    {
    // Dein Code
    }
    überprüfen, ob das letzte Zeichen ein Backslash ist. Mit dem "-1" bin ich mir gerade nicht 100% sicher, aber ich glaube schon, dass es nötig ist. Schreiben lässt sich mit dem Zugriff über den Index allerdings nicht. Für das Ersetzen von den normalen Slashs solltest du den String mit einer for-Schleife durchlaufen Zum ersetzen kannst du dann string.replace() benutzen. Die Position haste ja durch dein Laufvariable in der Schleife.

    Gruß
    Michi
    Geändert von Donnerfalke (10-07-2007 um 14:34 Uhr)

  4. #4
    Registrierter Benutzer Avatar von BLUESCREEN3D
    Registriert seit
    08.11.2002
    Beiträge
    665
    Zitat Zitat von Donnerfalke Beitrag anzeigen
    erstmal hallo an alle. Ist mein erster Beitrag hier
    Na dann erstmal herzlich willkommen
    Muss deinen ersten Post leider gleich auseinandernehmen:

    Zitat Zitat von Donnerfalke Beitrag anzeigen
    Mit dem "-1" bin ich mir gerade nicht 100% sicher, aber ich glaube schon, dass es nötig ist.
    Ja, ist es.

    Zitat Zitat von Donnerfalke Beitrag anzeigen
    Schreiben lässt sich mit dem Zugriff über den Index allerdings nicht.
    Doch, das geht auch:
    Code:
    string s="xyz";
    s[0]='X';
    s.at(1)='Y'; //sogar das geht, da at() eine Referenz zurückgibt
    
    //kann man auch so ausprobieren:
    char &referenz=s.at(2);
    referenz='Z'; //hier wird s geändert.
    Wenn man zwischen der vorletzen und letzten Zeile den Inhalt von s ändert, geht es nicht mehr.
    Weiß jemand, was dann geändert wird? Das dürfte ja irgendein anderer Speicherbereich sein O.o
    edit: Ja, das gibt schnell ein "Segmentation fault". Muss man also mit aufpassen.
    Geändert von BLUESCREEN3D (27-06-2007 um 14:04 Uhr)

  5. #5
    Donnerfalke
    Gast
    Zitat Zitat von BLUESCREEN3D Beitrag anzeigen
    Doch, das geht auch
    Stimmt, nach nochmaligem ausprobieren muss ich dir Recht geben. Hab mir eingebildet, dass es nicht gehen würde. Und nach genauerem Überlegen muss ich feststellen, dass es C# war, wo es nicht geht.

  6. #6
    oxe1976
    Gast
    Letztes Zeichen '\':

    Code:
    std::string s ....;
    if(s.length() > 0 && s[s.length()-1] == '\\') {
       // jo, letzter char ist ein backslash
    }
    '\' durch '/' ersetzen:

    Code:
    class ChangeChar {
          char     from;
          char     to;   
       public:
                ChangeChar (char pfrom, char pto) : from(pfrom), to(pto) {}            
          char  operator() (char c) { return ((c==from) ? to : c); }
    };
    
    ...
    
    std::string s ....;
    ...
    std::transform(s.begin(), s.end(), s.begin(), ChangeChar('\', '/'));

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •