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 
Beitragsersteller
 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?

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.

1Manui1 
Beitragsersteller
 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
           ...
 }
regex9  25.12.2021, 23:42
@1Manui1

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

1Manui1 
Beitragsersteller
 26.12.2021, 00:02
@regex9

und wie kann ich diesen Wert abfragen

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.