AnsiString nach Kriterium teilen [gelöst]
-
Hallo Leute,
ich hab einen string in dem etwas wie
hans\wurst
steht.Frage: Wie kann ich nach \ suchen und alles was dahinter steht in einen neuen String speichern???
thx, MFG
dope_dope
-
-
Ich brauch eine konsolenfähige Version!
-
wenn du kein AnsiString verwenden willst, kannst du ja einfach mit ner schleife durch den String und vergleiche die Char-Zeichen..
-
Und, was soll daran nicht "konsolenfähig" sein?
-
Mein bisheriger Code:
char zeile[1000]; // da steht hans\wurst drin! char suche[10] = "\\"; //Suchwort char *pos; pos = strstr(zeile, suche); //Parameter: suche in string , suche nach string if(pos) { printf("Das Suchwort befindet sich an der %d. Stelle im Array.", pos-zeile+1); }
Jetzt weiß ich zumindest schonmal an welcher Stelle sich der \ befindet. Aber wie kann nun alles was danach kommt in eine neue Variable schreiben???
-
Hallo
was hindert dich, trotz Konsole AnsiString oder std::string zu nehmen?
Ansonsten must du die Funktion strncpy() verwenden.bis bald
akari
-
das hindert mich.
while(fgets(zeile, 99, f) != NULL)
{...hast du vielleicht ein beispiel???
-
Hallo
nimm statt fgets() und Konsorten für Dateibehandlung lieber std::ifstream und std::string oder TStringList und AnsiString.
Ersteres ist Standard-C++ und wird im C++ Forum behandelt, also dort suchen, am besten in der FAQ anfangen. Es gibt ein Thema namens Dateien und Ströme.
Zweiters ist VCL, und auch dazu findest du genug im Forum.Das was du benutzt ist veraltetes C, das du auf einen modernen Compiler ohne Not nicht mehr einsetzen solltest.
bis bald
akari
-
Gibt es nicht eventuell eine einfachere Lösung als das komplette Programm zu verändern???
-
Hallo
Ansonsten must du die Funktion strncpy() verwenden.
Schau in der BCB-Hilfe zu dieser Funktion nach, da ist auch ein Beispiel drin.
bis bald
akari
-
Habs jetzt erstmal hinbekommen, nicht schön aber selten... werd ich bei Gelegenheit ma an die genannten Punkte anpassen!
thx, MFG
dope_dope
-
Noch ein Hinweis: wenn du ausdrücklich keine VCL und andere BCB-Spezialitäten verwenden willst dann gehören deine Fragen in's ANSI C bzw. C++-Forum, oder ggf. in's Konsolen-Forum.
Hier geht es um den BCB und seine Besonderheiten.
-
Nochmal eine etwas andere Frage:
Ich habe einen String
"bla test"Jetzt möchte ich diesen string am leerzeichen abschneiden und benötige nur den ersten Teil, also in dem fall "bla".
Es bringt mir nichts die Zeichen zu zählen, es muss am Lerrzeichen getrennt werden! Welche Funktion ´kann ich benutzen???
-
Hallo
Ähm, was glaubst du wurde im dem Thread so ausführlich plattgewalzt? Wie man Zeichen sucht und Strings trennt! Also benutz genau die Funktionen, die genannt wurden, und stell die etwas um.
bis bald
akari
-
Was soll man sagen:
- keine Zeit hat er
- er hat eine Lösung gefunden
- die funktioniert mit Leerzeichen nicht?
- er weiss nicht, das AnsiString und TStringList nun auch in einer Konsole gehen
- entsprechende Routinen wurden gezeigtBleibt nur noch -> *kopfschüttel*
-
Mal abgesehen davon wurde das hier schon unzählig oft durchgekaut.
In der Suche mal einfach "Seperator" eingeben ...
-
dope_dope schrieb:
das hindert mich.
while(fgets(zeile, 99, f) != NULL)
{...hast du vielleicht ein beispiel???
ich hoffe du meinst das
void get() { char data[1000]; while(strncmp("quit", data, 4)==!0 && strncmp("exit", data, 4)==!0) gets(data); }
-
Nachdem ich mein Programm angepasst habe, bin ich zu folgenden Lösungen gekommen:
Erstes Problem ("Hans\Wurst" sollte so geteilt werden, dass nur noch "Wurst" übrig bleibt):
AnsiString var_Username="Hans\Wurst"; char * pch; pch = strtok (var_Username.c_str(),"\\"); while (pch != NULL) { strcpy (var_Username.c_str(),pch); pch = strtok (NULL, " ,."); }
Zweites Problem ("Bla Test" sollte so geteilt werden, dass nur noch "Bla" übrig bleibt):
AnsiString var_Text="Bla Test"; char * pch; pch = strtok (var_Text.c_str()," "); strcpy (var_Text.c_str(),pch);
THX an alle Beteiligten!
-
Wo wird den Speicher für char* pch reserviert und wieder freigegeben? Und es ist dir bewußt, dass bei der ersten Verwendung von pch ein int besser geeignet wäre?
Und da Du doch schon AnsiString verwendest, warum verwendest Du nicht dessen Methoden AnsiPos() und SubString()?