Strings vergleichen



  • Hi, das Porgramm soll einen String aufnehmen, dem Benutzer die Möglichkeit geben, die zu zählenden Zeichen (zzz) einzugeben und diese dann im String zu zählen und auszugeben. So weit bin ich gekommen und der Counter funktioniert auch, aber leider stürzt das Porgramm bei "if (eingabe.at(i) == eingabe.at(k))" ab. Kann mir da jemand helfen?

    #include <iostream>
    #include <string>
    using namespace std;

    int main()
    {
    cout << "Bitte geben Sie den Text ein: " << endl;
    string eingabe = " ";
    getline(cin, eingabe);

    cout << "Bitte geben Sie die zu zaehlenden Zeichen ein: " << endl;
    char zzz = ' ';
    cin >> zzz;
    
    char i = 0;
    
    for (; i >= 0 && i <= eingabe.length(); i++)
    {
    	int counter = 0;
    
    	for (char k = 0; k >= 0 && k < eingabe.length(); k++)
    	{
    		if (eingabe.at(i) == eingabe.at(k))
    		{
    
    			counter++;
    		}
    
    	}
    	cout << ":  Kommt " << counter << " Mal vor. " << endl;
    }
    
    
    
    
    system("PAUSE");
    return 0;
    

    }



  • i <= eingabe.length(); Dein i läuft um 1 zu weit. Da du at(i) benutzt, prüft das Programm den Wert und wirft eine Exception. Mit einem Debugger solltest du eine entsprechende Fehlermeldung sehen können.



  • Auf das i >= 0 brauchst du nicht extra testen, denn das ergibt sich automatisch (durch die Initialisierung und das inkrement)

    char für den Zähler einer for-Schleife ist (bis auf kleine Mikrocontroller) eher unüblich.


Anmelden zum Antworten