Remove aud CString mit Parameter CString
-
Hi, ich muss leider noch eine Anfängerfrage loswerden und bitte um Hilfe
Wenn ich in einem CString eine Zeichenfolge löschen möchte, kenne ich das
nur so:CString x = "Max Muster Müller"; x.Remove("Muster");
Ausgabe: "Max Müller"
Warum kann man den Parameter von Remove nicht mit einem
anderen CString setzen)?CString x = "Max Muster Müller"; CString del = "Müller"; x.Remove(del);
Compiler: Konvertierung von CString in char nicht möglich
-
Ich habe nun einen Versuch in dieser Form unternommen, allerdings
ist die Ausgabe nun komplett leer??CString delit="123"; CString pathx=""; pathx=xy;//xy ist ein char in dem ein Pfad liegt z.B. c:\\test123 char buf = (char)(LPCSTR)delit; pathx.Remove(buf); MessageBox(pathx); //leer!
-
Wie wär 's mit:
CString x = "Max Muster Müller"; CString del = "Müller"; int pos = x.Find(del); if (pos >= 0) x.Delete(pos, del.GetLength());
-
Hallo jencas,
das klappt wunderbar, bis auf dass ich folgendes Problem bekomme:Ich lese den Hostnamen aus (leite ihn über die IP-Adresse ab).
Der sieht dann z.B. so aus \\PC-ICH (leider alles uppercase!!)struct hostent *pHostInfo; unsigned long IPAddress = inet_addr(nasip); WSADATA WSAData; memset(&WSAData, 0, sizeof(WSAData)); if(::WSAStartup(MAKEWORD(1, 0), &WSAData) == FALSE) { pHostInfo = ::gethostbyaddr(reinterpret_cast<char *>(&IPAddress),sizeof(unsigned long),AF_INET); } if(!pHostInfo) { WSACleanup(); } CString linuxname= pHostInfo->h_name;
Da ich in einem Auswahldialog von dem PC den Pfad ermitteln muss,
aber ohne den Hostnamen, findet er nichts zum löschen, da offenbar
das Find casesensitive ist.Ich habe also "\\Pc-ich\Ordner1\ordner2" und will als Ergebnis nur "Ordner1\ordner2" haben. Es wird aber nach "\\PC-ICH\Odrner1\ordner2" gesucht und
somit nichts ersetzt. Wenn ich makelowercase nutze ist das Problem, dass
die ordner auch lowercase werden...ich diese aber in exakter Schreibweise
aus dem Linuxsystem ziehen muss um später damit weiter zu arbeitenBleibt wohl nur die Option den Backslah von vorne zu parsen und alles ab da
abzuschneiden und danach alle\ in / umzuwandeln (da später http-Aufruf).
-
Wie wär 's mit:
CString x = "Max Muster Müller"; CString del = "Müller"; x.Replace(del,"");
-
Hallo Martin,
das geht aber leider auch nur dann, wenn Groß und Kleinschreibung
keine Rolle spielen
-
Habe es jetzt so gelöst (geht vlt ja sogar noch kürzer?!)
CString wert = "\\\\PC-Eins\\Ordner1\\Ordner2\\usw"; CString inhalt=""; int position1 = wert.Find("\\\\"); CString enthaltenist=(wert.Right(position1)); MessageBox(enthaltenist,"doppelt BS gefunden"); int position2=wert.Find("\\",position1+1); inhalt=wert.Mid(position1+1,position2-position1-1); MessageBox(inhalt,"einfacher bs gefunden"); int position3=wert.Find("\\",position2+1); inhalt=wert.Mid(position2+1,position3-position2-1); MessageBox(inhalt,"erster wert = pc name"); int position4=wert.Find("\\",position3+1); inhalt=wert.Right(wert.GetLength()-1-position3); MessageBox(inhalt,"restlicher pfad");
-
Du hast gefragt wie man etwas entfernt. Von caseless hast DU nicht gesprochen.
Für den Pfad-Kram den Du hier machst schau Dir mal die Shell Light Weight Api an.
http://msdn.microsoft.com/en-us/library/bb773559(VS.85).aspx
-
Martin Richter schrieb:
Von caseless hast DU nicht gesprochen.
DOCH mein 3te Postin in diesem Thread
Super Forum, kompetente Hilfe hier, insbesondere für Anfänger.
5 Sterne, super Cbayer