Aufsplitten des Inhaltes einer char-Variable
-
Hallo,
Wie kann ich aus einer char-Variable nach dem Vorkommen eines bestimmten Zeichens suchen. Dieses Zeichen dient als Trennzeichen, ich möchte eine Position zurück geliefert bekommen um dann den Inhalt der char-Variable komplett nach diesem Zeichen aufsplitten zu können.
Bsp. :
Inhalt der char-Variable: bla;blupp;blöd;
Nun möchte ich immer nach dem Semikolon trennen, jeder einzelne Wert auslesen. In C++ habe ich dies bereits einmal gelöst, funktioniert aber in MFC nicht, wie muss ich dort vorgehen ?
Danke !
mfg
Petrow
-
Hi,
MFC ist nichts anderes als C++ (nur ein paar zusätzliche Wrapperklasse)

=> Dein C++ Code müsste auch funktionierenIch habe dir ein Beispielcode geschrieben (ist aber ziemlich unsauber).
(Ich bin davon ausgegangen, dass nach dem letzten Element (in deinem Beispiel: "blöd") kein Trennzeichen mehr folgt):void CTestDlg::OnButton1() { CString strText = "bla;blupp;blöd"; char cSeperator = ';'; int nCurrentPos = 0; if(strText.IsEmpty()) return; nCurrentPos = strText.Find(cSeperator); /* 1. Teil parsen */ if(nCurrentPos == -1) { // nur ein Element vorhanden CString strElement = strText; MessageBox("Nur ein Element: "+strElement); } else { // 1. Element parsen CString strElement = strText.Mid(0, nCurrentPos); MessageBox("Element 1: "+strElement); } /* in einer Schleife die restlichen Elemente parsen */ while((nCurrentPos = strText.Find(cSeperator, nCurrentPos)) != -1) { nCurrentPos++; // das Trennzeichen muss weggeschnitten werden int nNextPos = strText.Find(cSeperator, nCurrentPos); if(nNextPos != -1) { // neues Element gefunden (noch nicht das Letzte) CString strElement = strText.Mid(nCurrentPos, nNextPos - nCurrentPos); MessageBox("Element gefunden: "+strElement); } else { // letztes Element, da kein Trennzeichen mehr folgt CString strElement = strText.Mid(nCurrentPos); MessageBox("Letztes Element: "+strElement); } } }Grüße Rapha
-
Hallo,
Gibt es eine Möglichkeit alle Semikolons aus einem CString herauszusuchen, also es reicht die Anzahl. Gibt es da kurze einfache Möglichkeiten ?
-
Lauf den String durch und zähl die ;.

int Anzahl = 0; char String[] = "blah; bla; blub;"; for (int zaehler = 0; zaehler < strlen(String); zaehler++) if (String[zaehler] == ';') Anzahl++;
-
Hallo,
wende Replace auf den betreffenden CString an (Replace gibt die Anzahl der Ersetzungen zurück):
CString strText("string;mit;semikolon"); int iAnzSemikolon = strText.Replace(";", ";");MfG