Post aus Forum.
Hab ich verwendet weil es schön Farbig abgesetzt ist:)
#include <algorithm> // Hier sind allerlei feine sachen drinn
#include <iostream> // cin cout etc.
#include <string> // kennst ja oder ? :)
using namespace std; // Bin Schreibfaul was std:: betrifft -also via namespace std;
template <class T> // Ein Header für eine
long kb_count(T temp,T temp2); // template Klasse
int main(int argc, char* argv[]) // Wer das nich kennt, is hier falsch :)
{ // Wie ? WinMain ? Da schaust aber dumm ausm Fenster *g*
string temp; // Sorry hab wenig schlaf... :)
string temp2;
cout<<"Bitte gib irgendwas ein"<<endl; // Eingabeaufforderung
getline(cin,temp); // Zeile vom Benutzer lesen
cout<<"Was soll gesucht werden"<<endl; // Und noch ma
getline(cin,temp2); // das gleiche wie oben
/*****************************************************************/
// Einzelnes Zeichenlong a; // Zaehler
//
a = count(temp.begin(),temp.end(),temp2[0]); // Zählen lassen
// ausgeben
cout<<temp2[0]<<" (das erste Zeichen von dem was Du eingegeben hast) kommt "<<a<<" mal vor"<<endl;/*****************************************************************************/
string::iterator p; // Izerator des Types string
// Suche nach einem Element, hier string// Ginge auch in ner Liste z.B. :)a=0; // Zählvariable auffrischen :) (Ich hab mich so auch mal Initialisiert: Knuddlbaer=NULL - seit dem klappt nix mehr :)
p = search(temp.begin(),temp.end(),temp2.begin(),temp2.end()); // Das erste Element suchen (wenn nichts gefunden wurde, bekommen wir temp.end() zurück)
while(p != temp.end()) // Solange wir nicht am ende sind
{p++; // Iterator um eine Einheit erhöhen
p = search(p,temp.end(),temp2.begin(),temp2.end()); // und ab da weitersuchen
a++; // Unseren Zähler eins erhöhen, weil habbe ja was gefunne 8-)
} ;
cout<<temp2<<" (der String den Du eingegeben hast) kommt "<<a<<" mal vor"<<endl;
cout<<"Jaja, es kommt wirklich "<<kb_count(temp,temp2)<<" mal vor :)"<<endl;
return 0;
}
//---------------------------------------------------------------------------
// Das ganze als Funktion:
template <class T>
long kb_count(T temp,T temp2)
{// Ich bin zu müde - aber die Funktion lässt sich eigentlich mit allerlei verwenden.// schaut mal ins Handburch zur STL :)// Ahso, der Parameter muss komatibel zum Iter sein.
T::iterator p; // Iterator des Types T
long a; // Zaehler (Buchhalter *g*)
a=0; // Wieso fragst Du ob ich Buchhalter leiden kann. Wegen der 0 ? :) Ich halt mein Buch auch immer fest wenn ich lese *g*
p = search(temp.begin(),temp.end(),temp2.begin(),temp2.end()); // Das erste Element suchen (wenn nichts gefunden wurde, bekommen wir temp.end() zurück)
while(p != temp.end()) // Solange wir nicht am ende sind
{p++; // Iterator um eine Einheit erhöhen
p = search(p,temp.end(),temp2.begin(),temp2.end()); // und ab da weitersuchen
a++; // Unseren Zähler eins erhöhen, weil habbe ja was gefunne 8-)
} ;return a;
}