Zerlegen von strings



  • 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 a

    Woerter 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)


Anmelden zum Antworten