ERLEDIGT
JA
JA
ANTWORTEN
6
6
ZUGRIFFE
948
948
EMPFEHLEN
-
23.07.05 23:15 #1ai-gamecock Tutorials.de Gastzugang
Hi!
Hab schon gesucht aber nichts gefunden was mir hilft;
wie kann ich aus einem String die Position des x-ten Vorkommens eines Teilstrings (bzw Zeichens) (möglichst als Integer) auslesen?
z.B.: Ich möchte aus diesem String:
String text="1*125152*250178*tree_normal_1*0*0*0**";
die zweite und dritte Zahl auslesen, die Zahlen sind aber Variabel und können daher auch mal kürzer sein als im Beispiel, d.h. text.SubString(3,6) geht nicht immer.
Ich hab schon mal was von find_first_of() oder so gehört, allerdings weis ich nichts über die Anwendung dieses Befehls, der Autor hat gespart und nach meiner Nachfrage nicht mehr geantwortet.
Der Befehl .Find(String,int) geht nur bei Stringlisten (obwohl er meiner Meinung nach ideal wäre), und der Befehl text.Pos(String) liefert nur den ersten oder letzten (mein ich zumindest)
Wer helfen kann, soll dies bitte (möglichst bald) tun! Danke!
-
Ist zwar ein Delphicode, doch sollte es kein Problem sein den nach C++ zu übertragen:
http://www.swissdelphicenter.com/en/...de.php?id=1195
-
25.07.05 14:49 #3
- Registriert seit
- Jun 2005
- Beiträge
- 8.168
Hi.
Die Klasse std::string besitzt eine Methode "find" die einen Substring in einem String findet und die Position zurückgibt. Falls das gesuchte Wort nicht in dem String vorkommt, gibt string::find den speziellen Wert "string::npos" zurück. Der zweite Parameter der Funktion ist ein Offset ab dem die Suche gestartet werden soll.Beispiel:Code :1 2
size_type find (const string& str, size_type pos=0) const; size_type find (char ch, size_type pos=0) const;
Code :1 2 3 4 5 6 7 8 9 10 11
#include <string> using namespace std; string str ("cat dog mice cat dog mice cat"); for (int i = str.find ("cat"); i != string::npos; i = str.find (cat, i+1)) { /* ... */ }
Diese Methode kann man auch mit einem einzelnen Zeichen aufrufen (denn bei dir scheint ja '*' ein Trennzeichen zu sein, oder?).
Ansonsten findet man auch viele Beispiele für string::find und string::find_first_of, string::find_first_not_of etc. mit Google.If at first you don't succeed, try again. Then quit. No use being a damn fool about it.
-
27.07.05 16:07 #4ai-gamecock Tutorials.de Gastzugang
mir scheint du hast meinen Text nicht wirklich gelesen.
wenn ich str.Find hinschreibe, erscheint die Fehlermeldung 'find' is not a member of 'AnsiString', was so viel bedeutet wie: des geht so nicht. Liegt des jetzt am BCB6, an meinem System oder daran, dass es halt nicht geht?
es geht auch nicht, wenn ich
reinschreibe.Code :1 2
#include <string> using namespace std;
und wo soll ich des:
hintippen?Code :1 2
size_type find (const string& str, size_type pos=0) const; size_type find (char ch, size_type pos=0) const;
-
27.07.05 16:33 #5
- Registriert seit
- Jun 2005
- Beiträge
- 8.168
Mein Text bezog sich auf die Standard C++ Bibliothek und die string Klasse die es da gibt. Wenn du was anderes benutzt, mußt du doch eigentlich besser wissen wie du damit umgehen mußt.
Du könntest deinen AnsiString in einen std::string konvertieren und dann die erwähnten Methoden auf diesen String anwenden:Code :1 2 3 4 5 6
#include <string> AnsiString s; std::string str (s.c_str( )); int i = str.find( ':' ); /* ... */
Vorausgesetzt dein BCB besitzt den <string> Header.
Nirgendwo. Das sind die Deklarationen für die besprochenen Methoden so wie sie in der string Klasse der Standard C++ Bibliothek stehen. Das hab ich nur zitiert damit du auch genau weißt wie es geschrieben ist. Wie willst du sonst wissen wie du es aufrufen kannst?und wo soll ich des:hintippen?Code :1 2
size_type find (const string& str, size_type pos=0) const; size_type find (char ch, size_type pos=0) const;
If at first you don't succeed, try again. Then quit. No use being a damn fool about it.
-
27.07.05 16:41 #6
- Registriert seit
- Jun 2005
- Beiträge
- 8.168
OK. Was bei std::string "find" ist, ist bei AnsiString "Pos".
AnsiString str;
int i = str.Pos(":");
Is doch alles ganz einfach.
PS: Haste denn keine Referenz/Handbuch oder sowas?If at first you don't succeed, try again. Then quit. No use being a damn fool about it.
-
25.09.05 10:25 #7ai-gamecock Tutorials.de Gastzugang
hallo erstmal
hab ja lang genug auf mich warten lassen
erstmal zu deinem PS: nein, ich habe kein handbuch. zumindest nicht wirklich, des einzige was ich hab is "C++ für Kids", nicht schlecht des buch, aber sobalds etwas professioneller wird hilft einem des buch nicht mehr weiter.
und zu allem anderen was geschrieben wurde: ich schaus mir bei gelegenheit an, vorausgesetzt ich mach noch viel mit C++; ich bin mehr oder weniger auf C# umgestiegen.
aber trotzdem danke,
aigc
Ähnliche Themen
-
Position eines Elements in einem Listenfeld bestimmen.
Von visiondpc im Forum Javascript & AjaxAntworten: 6Letzter Beitrag: 04.08.08, 07:35 -
Alle Teilstrings und deren Position im String finden
Von NTDY im Forum PHPAntworten: 3Letzter Beitrag: 09.04.08, 00:57 -
Index (Position) eines Elementes in einem Array ausgeben
Von Grille im Forum Javascript & AjaxAntworten: 2Letzter Beitrag: 24.01.08, 12:40 -
Position eines Wortes in einem String ermitteln
Von spex im Forum Visual Basic 6.0Antworten: 1Letzter Beitrag: 28.12.07, 10:44 -
Absolute Position eines Objekts relativ zu einem Div festlegen.
Von DaRula im Forum CSSAntworten: 2Letzter Beitrag: 11.07.06, 13:08





Zitieren
Login






