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.