string doorzoeken

Status
Niet open voor verdere reacties.

stykurgh

Gebruiker
Lid geworden
6 jul 2009
Berichten
715
hallo,

ik wil graag een string doorzoeken op een bepaald teken.

BV; string = lol

dan wil ik zoeken naar de letter "l"

maar met die functie die ik heb zoekt hij naar een L. en dan stopt hij. maar hij moet ze allebij vinden.

functie die ik heb

found=strin.find("l");
if (found!=string::npos)


ik dacht zelf aan zoeken op bepaalde locatie. dat hij eerst op plaats 0 zoekt dan op 1 etc tot het einde is bereikt maar ik weet niet hoe dat moet ;). maar misschien heeft iemand een andere idee.

mvg

michel
 
Je kan een positie waar beginnen moet worden met zoeken meegeven aan find. Dit kan je eenvoudig in een while lus gebruiken. Zo lang de find functie geen "npos" oplevert roep je find opnieuw aan met als beginpositie de vorige gevonden positie + 1.
 
hallo,

ik kom er niet echt uit ;(.
ik snap het idee wel alleen hoe moet ik aangeven dat hij op positie 1 moet zoeken en dan op positie 2 etc?

mvg

michel
 
Zoals je in de link in mijn post kan zien kan je de positie meegeven aan find. Bijvoorbeeld:
[cpp]strin.find("l", 6)[/cpp]
Dit begint met zoeken op positie 6. Als je de 6 vervangt door de positie van de laatste gevonden letter + 1 zal het zoeken naar het volgende voorkomen van de letter (kijk ook eens naar het voorbeeld in de link van mijn vorige post).
 
oke ik heb het een beetje:

found=strin.find("l" , A );
if (found!=string::npos){
a+=1;
}


a = dus 0 int begin. en als hij iets vindt dan doet hij +1.

het werkt alleen gaat het niet goed met op positie zoeken. als ik michel doe.vindt hij eerst de c dan de e. etc. maar hij moet op 1e plek kijken tot hij dus in dit geval een m vindt.
 
Laatst bewerkt:
als je toch naar maar 1 char zoekt kun je beter een loop gebruiken

Code:
	string _str = "lol";
	
	for(int i = 0; i < _str.size(); i++)
	{
		char c = _str.at(i);
		if(c == 'l')
			cout << "'l' found at " << (i + 1) << endl;
	}
 
oh sorry misschien was ik niet helemaal duidelijk met wat ik wilde maar ik wil wel alle letters zoeken. en het woord wordt zelf ingevoerd met een cin.
 
[cpp]found=strin.find("l" , A );
if (found!=string::npos){
a+=1;
}[/cpp]

Ik zou het wat efficienter doen:
[cpp]found=strin.find("l");
while (found != string::npos){
found = strin.find("l", found+1)
}[/cpp]
Anders kunnen letters dubbel gevonden worden.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan