Zerlegen von strings
-
Hallo!
Ich habe ein Problem.
Ich möchte ein Programm schreiben das Wörter nach bestimmten Buchstaben zb.s und u durchsucht und anschliesend ausgibt welcher buchstabe öfter vorgekommen ist.
Wie programmiert man das am besten?
MfG Georg
-
Am Besten mit dem STL-Algo count.
Wenn du darauf keinen Bock hast, dann läufst du einfach drüber:
string str("abcdabgh"); int a_counter=0, c_counter=0; //Nach a und b suchen for (int i=0;i<str.size();++i) { if (str[i]=='a') ++a_counter; else if(str[i]=='c') ++c_counter; }
-
Ich möchte den Text zuerst in einen vector einlesen und anschliessend auswerten.
Ist das möglich?
-
Ja. Aber ein normaler std::string würde auch ausreichen.
-
//typedef string text_container; typedef vector<char> text_container; text_container myText; // fill myText map<char, int> charCount; for (text_container::const_iterator tIt = myText.begin(), tEnd = myText.end(); tIt != tEnd; ++tIt) { ++charCount[*tIt]; }
-
Ich hab gerade folgendes programm eingegeben
string str;
cout<<"Bitte geben sie einen text ein:"<<endl;
cin>>str;int a_counter=0, c_counter=0; //Nach a und b suchen
for (int i=0;i<str.size();++i) {
if (str[i]=='a')
++a_counter;
else if(str[i]=='c')
++c_counter;
}
cout<< a_counter<<endl<< c_counter<<endl;
return 0;
}Aber irgendwie funktioniert es noch nicht richtig
Bitte helft mir weiter
-
Kann es sein, daß dieser Ausschnitt noch in einer vernünftige main() gepackt werden muß (inklusive der benötigten Header)?
-
Das habe ich schon gemacht.Ich hab nur einen ausschnitt reingestellt.
aber es wird irgendwie immer nur das erste wort ausgewertet.
-
//cin >> str; getline(cin, str);
-
Hm, du könntest ja das "cin>>str;" ersetzen durch "getline(cin,str);" - das liest bis zum Zeilenende ('\n') ein. (op>> liest standardmäßig bis zum nächsten Whitespace)
-
Kann mir nicht jemand kurz den programm anfang schreiben???
Ich kapier das irgendwie nicht.
Ich möchte aus einem text jedes einzelne wort auswerten.
wie fange ich da am besten an?
-
Enbtweder du befolgst meinen obigen Rat (damit kannst du eine komplette Textzeile von Tastatur einlesen und durch die Analyse schicken) oder du baust dir eine Schleife, die solange Wörter holt wie Bedarf besteht:
ifstream fin("daten.txt"); while(fin) { string str; fin>>str; //analysiere str } //Ergebnis-Ausgabe
(das arbeitet sich durch die Datei mit dem Namen "daten.txt" durch - wenn du willst, kannst du den Namen vorher von Tastatur holen)
-
Geht es nicht wenn ich den text in einen vector <string> text einlese?
Ich möchte jedes einzelne wort aus einem text analysieren auf a und c untersuchen (z.b aber heute ist es schoen)
Auswertung:
aber : hat mehr a als c
schoen: hat mehr c als aWoerter die kein a und c enthalten sollten in einen anderen vector extrahiert werden.
-
Klar kannst du - was du dort unter "analisiere str" und "Ergebnis-Ausgabe" machst, ist ganz allein dir überlassen
(Zur Info: Bei jedem Schleifendurchgang steht ein neues Wort aus der Eingabedatei in str und kann dann ausgewertet werden)