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:
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:
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...
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
ü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.Code:if(string[string.length()-1) == '\\') { // Dein Code }
Gruß
Michi
Geändert von Donnerfalke (10-07-2007 um 14:34 Uhr)
Na dann erstmal herzlich willkommen
Muss deinen ersten Post leider gleich auseinandernehmen:
Ja, ist es.
Doch, das geht auch:
Wenn man zwischen der vorletzen und letzten Zeile den Inhalt von s ändert, geht es nicht mehr.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.
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)
Letztes Zeichen '\':
'\' durch '/' ersetzen:Code:std::string s ....; if(s.length() > 0 && s[s.length()-1] == '\\') { // jo, letzter char ist ein backslash }
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