Sonderzeichen maskieren

Hy!

Wenn du einen CString hast, kannst du das mit der Methode Replace machen
MSDN lässt grüßen ;)

Die Frage ist nur, ob du die \ in deinem String ersetzen musst, wenn sie schon im String drinnen sind können sie eigentlich kein Problem mehr verursachen.

mfg
uhu01
 
moin


=Ravebaby]
Du hast immer mit CHARS gearbeitet. Meine Variable ist vom Typ CString
Schön zu wissen, wäre allerdings von Vorteil gewesen hättest du es am Anfang geschrieben :rolleyes:


uhu01 hat gesagt.:
Die Frage ist nur, ob du die \ in deinem String ersetzen musst, wenn sie schon im String drinnen sind können sie eigentlich kein Problem mehr verursachen.
In dem Fall dürften sie wirklich keine Probleme mehr verursachen.


mfg
umbrasaxum
 
ja, da hast natürlich recht, dass es sinnvoll gewesen wäre es vorher zu sagen. Ich hatte nur in dem Moment nicht dran gedacht, dass es ja CHARS und Strings gibt, bin noch ziemlicher C - Newbie.
Doch, es gibt leider einen Fehler, dann versuch ich das mit dem Replace mal... DANKE für all die tolle Unterstützung!
 
Hy!

Zeig mal deinen Code, der Fehler muss eigentlich durch etwas anderes verursacht werden als die \ im String.

mfg
uhu01
 
OK, ich habe es versucht.
Aber wenn ich es so schreibe: "int n = filepath.Replace('\', '\\');"
bringt er einen Fehler: "illegal escape sequence"
Und wenn ich die Sonderzeichen mit \ maskiere, also so: "int n = filepath.Replace('\\', '\\\\');"
kommen auch wieder Fehler: " 'argument' : truncation of constant value"
was soll n das heißen?!
 
moin


Die einfachen Hochkommas sidn nur für ein Zeichen da also z.B. '\\'.
\\\\ müsste also in doppelte Hochkommas "\\\\".

Aber poste wirklich mal deinen Code der dir probleme macht.


mfg
umbrasaxum
 
doch, es liegt ganz sicher daran, dass nur \ und nich \\ in dem Pfad enthalten sind.
Mein Code schaut gerade so aus:
Code:
    CFileItem *actFileItem;
	DWORD_PTR actDword = m_listCtrl.GetItemData(elementAt);
	actFileItem = (CFileItem*)actDword;
	CString filepath = actFileItem->GetPath();
	CString filename = actFileItem->GetName();
	
	pView->CreateNewColumn("c:\\programme\\");
bisher übergebe ich den Pfad ja statisch "c:\\programme\\"
In Zukunft soll der in "filepath" enthaltene Pfad übergeben werden.
Doch auch wenn ich den statischen Pfad folgendermaßen "pView->CreateNewColumn("c:\\programme\\");" ändere, kommt ein Fehler.
Also muss es doch an den Sonderzeichen liegen, oder?!
 
juhu, super, nun klappts.
Als ich beim Ersetzen der Sonderzeichen die ' durch " ersetzt habe, hat er den Pfad richtig maskiert und nun gibt es keinen Fehler mehr!
Vielen, vielen Dank!
 
moin


Gerade das:
Code:
pView->CreateNewColumn("c:\\programme\\");" ändere, kommt ein Fehler.
ist der Beweiss das es nciht daran liegt!

Was ist denn überhaupt der Fehler, bzw. wie wirkt er sich aus?


mfg
umbrasaxum
 
ist alles sehr komisch.
Wenn ich nun int "n = filepath.Replace("\\", "\\\\");" auskommentiere und die Variable mit dem Inhalt mit einem \ übergebe, geht es dennoch.
Wenn ich jedoch statisch "c:\programme\" übergebe, kommt der Fehler:
" warning: 'p': unrecognized character escape sequence"
und
" error: newline in constant"
Ich verstehs nicht...
wenn ich mir den Inhalt der Variablen filepath ausgeben lasse, liegt er in folgender Form vor: c:\programme
 
Zurück