Zeichen aus String löschen
-
Gibt es evtl noch eine andere Möglichkeit?
-
Aeris schrieb:
Gibt es evtl noch eine andere Möglichkeit?
Mittels []-operator:
std::string s("Hello"); s[1] = 'a'; //hui, jetzt heißt's Hallo^^MfG
GPC
-
string hat auch replace funktionen, aber für einzelne zeichen nimm GPCs variante.
-
In deinem Beispiel sieht es so aus, als ob du mit dem Pfad noch weiterarbeiten möchtest. Da wäre es ratsam das Zeichen zu entfernen und nicht nur zu ersetzen.
-
Ja ich will mit dem Dateinamen weiterarbeiten. Mein eigentliches Problem ist dass soblad sich ein Leerzeichen in meinem Pfad befindet, ein Anführungszeichen am Ende meines Dateinamen befindet. Ist keine Leerzeichen im Pfad ist auch kein Anführungszeichen da. Jetzt dachte ich mir ich nehm das Anführungszeichen einfach weg. Aber dann gibt mein Compiler mehrere Fehlermeldungen aus.
Meinst Du mit entfernen gibt es das Problem nicht mehr?
Wie entferne ich das Zeichen ohne es zu ersetzen?
-
Mittels der string::erase Funktion, auf die DarthZiu bereits verlinkt hat.
-
Was für Fehler gibt der Compiler dir denn aus?
PS: Zum Entfernen kannst du entweder erase() verwenden oder (da es offenbar das letzte Zeichen des Namens ist) auch resize() - am besten in einer if()-Abfrage, mit der du den Wert vorher kontollierst.
-
Erklär uns doch mal bitte, was du vorhast. Ich glaube, du hast da nen Denkfehler drin. Denn das hier:
Aeris schrieb:
Mein eigentliches Problem ist dass soblad sich ein Leerzeichen in meinem Pfad befindet, ein Anführungszeichen am Ende meines Dateinamen befindet. Ist keine Leerzeichen im Pfad ist auch kein Anführungszeichen da.
kann ich mir weder vorstellen noch erklären.
-
Ich hab es mit allem versucht, aber er macht es nicht, auch nicht mit
destination.resize(destination.length()-1);Er gibt mir eine Fehlermeldung aus, und zwar
Die Anweisung in 0x00c90003 verweist auf Speicher in 0x00c4dfc9. Der Vorgang written konnte nicht durchgeführt werden.
und dann hab ich noch einen Rintime Error 216 at 00c90003
-
Aeris schrieb:
Ich hab es mit allem versucht, aber er macht es nicht, auch nicht mit
destination.resize(destination.length()-1);"er macht es nicht", was ist es? Was genau willst du tun, sprich dich aus...
Er gibt mir eine Fehlermeldung aus, und zwar
Die Anweisung in 0x00c90003 verweist auf Speicher in 0x00c4dfc9. Der Vorgang written konnte nicht durchgeführt werden.
und dann hab ich noch einen Rintime Error 216 at 00c90003
Sorry, aber ich kann noch nicht in deinen Speicher reinschauen, Code würde eher helfen. Ansonsten geh mit dem Debugger drüber.
MfG
GPC
-
char TextFeld(char *datei) { //Variablendeklaration int Wert; string destination; //Dateipfad auslesen string str = datei; // Erste Position von \ (von rechts gesehen) holen string::size_type pos = str.rfind('\\'); if (pos != string::npos) ++pos; else pos = 0; //Neuen Ordner erstellen String Folder; Folder = "C:\\Neuer Ordner\\" ; _mkdir(Folder.c_str()); //Zielpfad zusammensetzen destination = Folder.c_str() + str.substr(pos); //destination[destination.length()-1] = ' '; //destination.resize(destination.length()-1); //MessageBoxInhalt const char* Text = "Soll die Datei ersetzt werden?"; const char* Kopf = "Datei bereits vorhanden!"; // Textfeld füllen FILINGSYSTEM->edtFILENAME->Text = datei; bool hatGeklappt = CopyFile(datei,destination.c_str(),true); if (hatGeklappt == false) { Wert = Entscheidung(Text, Kopf); if (Wert == 1) { bool hatGeklappt = CopyFile(datei,destination.c_str(),false); MessageBox(NULL, str.substr(pos).c_str(), "Datei kopiert:", MB_OK); if (hatGeklappt == true) MessageBox(NULL, "ja", "Datei kopiert:", MB_OK); else MessageBox(NULL, str.substr(pos).c_str(), "Datei nicht kopiert:", MB_OK); } else ; } return *datei;Mit "er macht es nicht" meine ich er kopiert mir meine Datei nicht in mein neues Verzeichnis. Das ist mein erstes C++ Programm sollte ich vielleicht erwähnen und tu mich dementsprechend hart.
Er kopiert das File, solange im Quellverzeichnis kein Leerzeichen enthalten ist.
-
Hat noch jemand eine Idee?