Vokale zählen klappt nicht?

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.

1Manui1 
Fragesteller
 25.12.2021, 10:22

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?

0
regex9  25.12.2021, 14:38
@1Manui1

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.

0
1Manui1 
Fragesteller
 25.12.2021, 22:00
@regex9

und wie kann ich diesen Wert abfragen, weil das Funktioniert ja nicht

switch (buchstabe.unicode()) {
           case '228': break;               //ä abfragen
           ...
 }
0
regex9  25.12.2021, 23:42
@1Manui1

Die unicode-Methode liefert einen short-Wert. Das ist eine Zahl, kein Character oder String.

0
1Manui1 
Fragesteller
 26.12.2021, 00:02
@regex9

und wie kann ich diesen Wert abfragen

0
regex9  26.12.2021, 05:15
@1Manui1

Nach wie vor via switch / if-else.

switch (buchstabe.unicode()) {
  case 228:
    // do something ...
    break;
}

Wenn du noch so unsicher im Umgang damit bist, beschäftige dich noch einmal mit Variablentypen, Literalen und Verzweigungen.

1