String zerteilen
-
CarstenJ schrieb:
Hallo,
warum benutzt du nicht einfach die Boardsuche? Die Frage wurde bereits mehrfach beantwortet, sowie Alternativen genannt.
die habe ich schon benutzt, dort stand aber irgendwie überall nur das das nicht möglich sei...
char* ist doch ein zeiger auf ein/mehrere Zeichen
also müsste man doch mit
[cpp]
char serverip[16];
char *token;
token = strtok(buffer, "|");
*serverip = token
[/cpp]
diesen Zeiger dereferenzieren und dem array zuordnen können oder?MFG, Rodney
-
Nein, Du kannst nicht einfach eine Zeichenkette einem Array zuweisen.
Im Prinzip müsstest Du alle Zeichen einzeln in das Array kopieneren. Stattdessen kannst Du aber z.B. die Funktion strcpy() nutzen (wobei das jetzt eigentlich C ist):#include <cstring> ... char serverip[16]; char *token; token = strtok(buffer, "|"); strcpy(serverip, token);
-
Solche Stringoperationen mit strtok etc. durchzuführen ist schon C, mit Strings geht das viel leichter, von den anderen Vorteilen mal abgesehen:
const string str = "VAR1|VAR2"; string str1 = str.substr(0, str.find('|')); string str2 = str.substr(str.find('|')+1);
MfG MAV
-
Hi Leute,
ihr habt mir wirklich schon viel geholfen, langsam habe ich auch gelernt mit der MSDN umzugehenAllerdings hab ich noch ein dickes Problem:
Ich habe folgende Funktionint receive_nr(LPCSTR nachricht) { // Mit dieser Funktion werden Nachrichten empfangen und zerteilt char* nummer = 0; char* token = 0; char* dienachricht = 0; printf("übergebene Nachricht:",nachricht); strcpy (dienachricht, nachricht); token = strtok(dienachricht, "|"); strcpy(nummer, token); return StrToInt(nummer); }
Diese bekommt jetzt bspw "1|0|Rodney" übergeben, und soll die 1 zurückgeben.
(ist jetzt nur die einfache Version)
Allerdings bekomme ich immer hierstrcpy (dienachricht, nachricht);
einen Zugriffsfehler von Windows mitgeteilt, der mir nicht wirklich einleuchtet.
MFG, Rodney
-
Der Fehler kommt dadurch zu Stande, dass Du mit strcpy in Speicher schreibst, der Dir nicht gehört. Denn nachricht ist bei Dir ein Zeiger auf einen char - mehr nicht. Damit hat Du noch keinen Speicherplatz für die Zeichenkette reserviert.
Den musst Du explizit angeben, z.B. mit char nachricht[50] (oder eine andere angemessene Länge).
-
Asgard schrieb:
Der Fehler kommt dadurch zu Stande, dass Du mit strcpy in Speicher schreibst, der Dir nicht gehört. Denn nachricht ist bei Dir ein Zeiger auf einen char - mehr nicht. Damit hat Du noch keinen Speicherplatz für die Zeichenkette reserviert.
Den musst Du explizit angeben, z.B. mit char nachricht[50] (oder eine andere angemessene Länge).hatte ich versucht, mit dem selben Ergebnis
-
Was ist denn mit dem Beispiel auf der MSDN Seite. Das funktioniert bei mir, und erfüllt doch auch deine Bedürfnisse, oder etwa nicht?
-
Ich meinte übrigens im vorherigen Beitrag dienachricht und nicht nachricht, habe mich da vertan.
Dann bleibt eigentlich nur noch die Möglichkeit, dass nachricht zu lang ist, ansonsten müsste das so funktionieren.
-
Tja, mit strings ist sowas besser zu debuggen *für das Forum werb, in dem sich das Geschehen abspielt'
-
ja ich habe mir schon gedacht, dass du dieNachricht meintest und hab das auch so probiert. Irgendwie ist ja auch der komplette LPCSTR nicht richtig da, weil er auch diesen auch als leer ausgibt, obwohl ich einen STring übergebe!
-
Dann zeig mal ein bisschen mehr Programmcode.
Aber Mis2Com hat schon recht, entweder sollte der Thread verschoben werden, oder "echtes" C++ eingesetzt werden.