Ovenstående er godt nok , men hvis der er mange forskellige karakterer så bliver det en lille smule besværligt. Jeg kunne også lave et konstant array med de mulige karakterer og løbe det igennem, men jeg tænkte på om der var en bedre mulighed med nogle bit-operationer måske.
De \"set\" variant du skriver ovenfor fra Pascal findes IKKE i C, sådan som du også selv har opdaget.
Du kan dog lave noget der ligner, dog skal du angive alle gyldige tegn direkte:
int inset(char *s, char c) { for (int i=0; s[i] != \'\\x\';i++) if (s[i] == c) return i+1; return 0; } if (inset(\"abcdefghijklmnopqrstuvxyzABCDEFGHIJKLMNOPQRSTUVWXYZ\", ch) > 0) { // ch var et af d.o. tegn }
initializerer set ved hjælp af ovenstående metode, og så anvender set.contains metoden. Proceduren skal løbe hvert bogstav igennem for en hel bog, så det er vigtigt at min algoritme er tidseffektiv. Den ovenstående procedure er jo ikke specielt tideffektiv.
set.contains laver -nødvendigvis- nøjagtig det samme som inset() - men du kan sikkert opnå nogen bedre performance ved at anvende f.eks. strpos eller lign. til at finde ud af om \'ch\' er i settet.
soepro >> Der findes i C++ Builder et set begreb præcis magen til det du finder i Delphi. Det er implm. som en template. Den template kan i øvrigt nemt modificeres således den kan compilere i VC++
Hvis det findes , kan jeg ikke finde det :) Jeg ved ikke hvad en template er ... eller hvordan jeg skal bruge den. Jeg tror jeg på et tidspunkt fandt noget, som var konverteret direkte fra delphi , men som jeg ikke kunne finde ud af at bruge.
Imidlertid har jeg fundet ud af at det set jeg ville bruge ikke vil tage imod æøå, selv om jeg har erklæret det som set <AnsiChar,0,255> s;
Jens B >> Jeg ved godt at set findes i BCB - det anvendes bl.a. til ShiftState in KeyDown/KeyUp event handlerne - men den konstruktion som jeppe anvender i Pascal, er en Pascal-sprog specifik ting (fandtes også i PolyPascal fra 1988) som ikke findes i C.
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.