Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

Anonymous

unregistriert

1

16.07.2004, 12:16

String finden in einer Zeichenkette

Hallo!

Gibt es eine Funktion unter c/c++ die eine Zeichenkette in einer Zeichenkette sucht z.B

strfind("Hallo Welt","Hallo"); // Return true;
strfind("Hallo Welt","Guten Morgen"); // Return false;

Hoffe es ist verständlich !!!! :-D

bis dann

:huhu: BYB BYE

AXA

Frischling

  • Private Nachricht senden

2

16.07.2004, 12:31

Die frage da oben ist von mir hab vergessen mich ein zu loggen *schäm*
Hinzu kommt noch das dies wohl das falsche Topic ist *schäm*

Osram

Alter Hase

Beiträge: 889

Wohnort: Weissenthurm

Beruf: SW Entwickler

  • Private Nachricht senden

3

16.07.2004, 13:06

Wenn großkleinschreibung unterschieden werden soll, strstr. Teste den Rückgabewert auf NULL ab.
"Games are algorithmic entertainment."

4

16.07.2004, 23:41

Beider STL ist es einfach die Methode std::string::find. Die STL hat da aber noch andere nette Funktionen in petto :)
Wichtig! Ich übernehme keinerlei Verantwortung für eventl. Datenverlust oder Schäden am Rechner ;D

AXA

Frischling

  • Private Nachricht senden

5

17.07.2004, 20:43

Jo die STL kenn ich aber wie funktioniert da diese funktion. Hab deswegen mal selber eine gemacht müsste funktionieren Sie gibt die Position wieder wo der string gefunden wurde

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
int find_string(char* pcString,const char *cpcString)
{
// Parameter prüfen


if((pcString == NULL) || (cpcString == NULL)) return false;
if(pcString == cpcString) return false;

// Variablen Anlegen

unsigned int uiStrLen1 = strlen(pcString);
unsigned int uiStrLen2 = strlen(cpcString);
unsigned int i = 0;
unsigned int k = 0;
unsigned int uiFind = 0;
unsigned int uiFindStr = 0;
int iReturn = -1;
bool bQuit = false;

// Variablen prüfen



if((uiStrLen1 < uiStrLen2) || (uiStrLen1 == 1)) return -1;


// String suchen

while(1)
{
if(bQuit) break;

for(int v=i;v<uiStrLen1;v++) 
    {
    if(pcString[v] == cpcString[uiFindStr%uiStrLen2]) uiFind++;
    if(uiFind == uiStrLen2) { iReturn=v-uiStrLen2; break; };
    uiFindStr++;
    };

uiFindStr = 0;

if(((i = i + uiStrLen2) > uiStrLen1))  { 
k++; i = k; if((k>uiStrLen2) && (i==uiStrLen1)) { bQuit = true; break; }; 
};

uiFind = 0;
};

return iReturn;
};


Ich glaube einiges an der Funktion ist überflüssig aber das ist erstmal egal. War eh nur für Test zwecke gedacht wer lust hat kann ja mal prüfen welche Variante schneller ist ;D.

Klaus

Treue Seele

Beiträge: 245

Wohnort: Stuttgart

Beruf: Schüler

  • Private Nachricht senden

6

18.07.2004, 01:43

Meckert der Compiler nicht, wenn du in ner int-Funktion nen boolean (return true/false) zurückgibst? Oder konvertiert der das selbst?
Mozilla Firefox
The Browser - reloaded

7

18.07.2004, 03:44

Der Boolische Wert wird als einfache Integer-Zahl gespeichert. Eine konvertierung der beiden Zahlen NULL (false) und EINS (true) wird daher vorgenommen.
Wichtig! Ich übernehme keinerlei Verantwortung für eventl. Datenverlust oder Schäden am Rechner ;D

AXA

Frischling

  • Private Nachricht senden

8

18.07.2004, 14:21

genau! Das ist für mein Compiler kein problemm (Der ist aber auch ein Fuchs) ;D . Aber wie funktioniert denn jetzt die Funktion von STL ???
Aktuelles Projekt: Geheim

wird diese Projekt ein erfolg gründe ich
ein Team !!!

9

18.07.2004, 16:34

In etwa wie deine Funktion auch. Nur das der Quell-String vom Objekt selbst geliefert wird.

Die Funktion erwartet den String der gesucht werden soll und zusätzlich kann man noch einen Offset-Wert angeben. Als Ergebnis liefert die Funktion dann die Position des Strings oder std::string::npos wenn er nicht gefunden werden kann.
Wichtig! Ich übernehme keinerlei Verantwortung für eventl. Datenverlust oder Schäden am Rechner ;D

Werbeanzeige