Vokale zählen klappt nicht?
void MainWindow::on_btnVokale_clicked()
{
int Vokale=256;
int counter(0);
QString Eingabe = ui->EingabeEdit->toPlainText();
for(int i=1;i<=Eingabe.length();i++)
{
switch(Eingabe[i])
{
case 'a':
case 'e':
case 'i':
case 'o':
case 'u': counter++; break;
}
}
QString output = QString::number(counter);
ui -> AnalyseWidget -> clear();
ui -> AnalyseWidget -> addItem("Deine Eingabe besteht aus "+output+" Zeichen");
}
Also mit diesem Code sollen die Vokale gezählt werden aber Qt gibt mir eine Fehlermeldung aus wenn ich das i in die Eckigen Klammern schreibe. Kann mir jemand helfen
1 Antwort
Verwende die at-Methode, um auf ein bestimmtes Zeichen eines QString zuzugreifen. Du bekommst daraufhin ein QChar-Objekt, welches du mit der unicode-Methode zu einem vorzeichenlosen short-Wert konvertieren kannst, welcher sich wiederum in das switch-Konstrukt einsetzen lässt.
Beachte bei der Schleife, dass die Indizierung auch bei QStrings bei 0 beginnt.
for (int i = 0; i < eingabe.length(); ++i) {
QChar buchstabe = eingabe.at(i);
switch (buchstabe.unicode()) {
// etc. ...
Ich würde dir übrigens empfehlen, Variablennamen mit einem kleinen Buchstaben zu beginnen. So lassen sie sich von Typbezeichnern einfacher trennen.
Jedem Zeichen im verwendeten Zeichensatz kann ein Dezimalwert zugeordnet werden. Schau in die erweiterte ASCII-Tabelle, dort hat ein ä beispielsweise den repräsentativen Wert 228. Genau diesen Wert liefert auch die unicode-Methode.
ok vielen danke es klappt. Allerdings brauche ich das gleiche auch noch für Umlaute aber man darf ja ä,ü,ö nicht in Programmen benutzen als abfrage, wie kann man das umgehen?