Backslash in String?
-
Hallo,
normal keine große Sache, aber ich bekomme den Backslash in einem String nicht hin.
Wandle einen Pfad (C:\hallo\du.txt) in einen String um und er nimmt natürlich das \h \d als ein Zeichen.
WIe kann ich das umgehen?
dankeschön
mfg Harry
-
c:*\*hallo\**du.txt
-
* storage fuer neuen string anlegen
* zeichenweise kopieren
* wenn ein backslash in der quelle ist, zwei backslashes ins ziel schreiben (schreibzeiger entsprechend verschieben)
-
c.rackwitz schrieb:
* storage fuer neuen string anlegen
* zeichenweise kopieren
* wenn ein backslash in der quelle ist, zwei backslashes ins ziel schreiben (schreibzeiger entsprechend verschieben)Nein, das ist natürlich Unsinn.
-
dEUs schrieb:
c.rackwitz schrieb:
* storage fuer neuen string anlegen
* zeichenweise kopieren
* wenn ein backslash in der quelle ist, zwei backslashes ins ziel schreiben (schreibzeiger entsprechend verschieben)Nein, das ist natürlich Unsinn.
kannst du deine meinung auch begruenden?
-
Danke mal
aber da gibts nochn paar Fragen:
Wie legt man nen storage an?
bzw. find ich das doch irgendwie schwach das man ein doch nicht so selten gebräuchliches Zeichen derartig erstellen muss.
-
Habt ihr die Antwort von Pellaeon übersehen?
-
hallo ne natürlich nicht, nur öffne ich die Datei zuerst und übergeb sie dann dem String m_strFilePath.
Dadurch kann ich das nicht einfach so reinschreiben sondern müsste nach jedem / ein noch ein / hinzufügen.
ne Möglickeit wär halt mit den Funktionen FIND und INSERT zu arbeiten, wollte jedoch nur wissen obs ne einfachere Möglichkeit gibt.
mfg harry
-
c.rackwitz schrieb:
dEUs schrieb:
c.rackwitz schrieb:
* storage fuer neuen string anlegen
* zeichenweise kopieren
* wenn ein backslash in der quelle ist, zwei backslashes ins ziel schreiben (schreibzeiger entsprechend verschieben)Nein, das ist natürlich Unsinn.
kannst du deine meinung auch begruenden?
Sicher. Siehe FAQ: http://www.c-plusplus.net/forum/viewtopic-var-t-is-39458.html
Inzwischen würde ich es zwar etwas anders erklären, aber man müsste es trotzdem verstehen.@harrychen:
Du musst einen Backslash nur (und NUR) in deinem Quellcode escapen. In Dateien, die du einliest bzw. in Usereingaben musst du das nicht tun.
-
achso versteh schon danke, dann hab ich sozusagen ja eh keine Probleme da ich die Datei auswählen lasse...
dankeschön
mfg harry
-
korrekt
-
deus, dann hab ich die frage falsch interpretiert. konnte ja nicht ahnen, dass jemand sowas nicht weiss. mein fehler.
davon abgesehen lassen sich backslashes in strings so quoten.
-
c.rackwitz schrieb:
deus, dann hab ich die frage falsch interpretiert. konnte ja nicht ahnen, dass jemand sowas nicht weiss. mein fehler.
Das kommt leider recht häufig vor. Daher auch der FAQ-Eintrag, weil ich es irgendwann leid war immer wieder zu erklären
c.rackwitz schrieb:
davon abgesehen lassen sich backslashes in strings so quoten.
Was du damit sagen willst versteh ich leider nciht. Deine Vorgehensweise wird nie benötigt (programmatisch einen \ durhc 2 zu ersetzen)
-
dEUs schrieb:
c.rackwitz schrieb:
davon abgesehen lassen sich backslashes in strings so quoten.
Was du damit sagen willst versteh ich leider nciht. Deine Vorgehensweise wird nie benötigt (programmatisch einen \ durhc 2 zu ersetzen)
Passt perfekt hierher.
Es gibt Fälle wo man in einem String (Variable) alle \ quoten muss. Und nicht nur die Backslash. Bei MySQL wenn man den Query der DB übergibt. MySQL hat aber eine Funktion dafür. (mysql_escape_string() oder so ähnlich)Nach so einem Spezialfall wurde aber hier nicht gefragt und deshalb ist es die Standardantwort aus der FAQ.
-
Einer Datenbank-Abfrage übergibt man nie Daten im Query-String!!! Da öffnest Du tür und Tor für SQL-Injects!
Dazu gibt es Parameter, die man separat der Datenbank übergibt!
-
Dann schreibe mal bitte einen INSERT dem du beim INSERT keine Daten (z.B. Text) übergibst.
Also z.B.
INSERT INTO tabelle SET spalte = 'Hallo Welt';
bzw.
INSERT INTO tabelle (spalte) VALUES ('Hallo Welt');
-
INSERT INTO tabelle (spalte) VALUES (@MyText);
Und das "@MyText" übergibst Du direkt Deiner Datenbankverbindung!
Suche doch bitte mal nach SQL-Inject...Jede vernünftige Datenbank unterstützt das übergeben von Parametern!
-
kann MySQL das?
-
Unix-Tom schrieb:
dEUs schrieb:
c.rackwitz schrieb:
davon abgesehen lassen sich backslashes in strings so quoten.
Was du damit sagen willst versteh ich leider nciht. Deine Vorgehensweise wird nie benötigt (programmatisch einen \ durhc 2 zu ersetzen)
Es gibt Fälle wo man in einem String (Variable) alle \ quoten muss. Und nicht nur die Backslash.
Zugegeben, an diesen Fall habe ich nciht gedacht
-
Du kannst mir glauben wenn ich dir sage das ich weiß was SQL-Injetions sind.
Was steht in @MyText drin.
Liefere doch mal etwas Code bitte.