declaration de strings dans une classe

Bonjour.
Je souhaiterais coder un menu pour un LCD 4 lignes.
Plutôt que de le faire en procédural, je vais le faire avec une classe Objet justement pour m'entrainer avec les classes. J'ai commencé, et ca marche à peu près sauf que la petite flèche qui définit le choix ne s'affiche pas à la fin du mot du menu. Vous verrez j'ai fait un petit sizeof() dans le code pour que la flèche s'affiche juste après le mot.
A mon avis il y a un problème de déclaration des strings dans la classe.

Pouvez vous m'en dire plus? Je précise que je débute en POO.

#include <Wire.h>
#include <LiquidCrystal_I2C.h>

LiquidCrystal_I2C lcd(0x3F, 20, 4);


class Menu
{
  private:
    int Choix;
    const String NomChoix[4] = { "Choix Blanc", "Choix Noir", "Choix Rouge", "Choix Jaune"};


  public:
    Menu();
    void UpdateMenu();
    void Descendre();
    void Monter();
};

Menu::Menu()
{
  Choix = 0;
}

void Menu::UpdateMenu()
{
  lcd.clear();

  for (int i = 0; i < 4 ; i++) {
    lcd.setCursor(0, i);
    lcd.print(NomChoix[i]);
  }


  int LongMotChoix = sizeof(NomChoix[Choix]);
  lcd.setCursor(LongMotChoix + 1, Choix);
  lcd.print((char)127);

}

void Menu::Descendre()
{
  if (Choix < 3) {
    Choix++;
  }
  UpdateMenu();
}

void Menu::Monter()
{
  if (Choix > 0) {
    Choix--;
  }
  UpdateMenu();
}

Menu menu1;

void setup() {
  lcd.init();
  lcd.backlight();
  lcd.begin(20, 4);
  lcd.setCursor(0, 0);
  lcd.clear();
}

void loop() {

  menu1.Descendre();
  delay(1000);
  menu1.Descendre();
  delay(1000);
  menu1.Descendre();
  delay(1000);
  menu1.Monter();
  delay(1000);
  menu1.Monter();
  delay(1000);
  menu1.Monter();
  delay(1000);

}

Bonjour,

Ce que tu veux c'est la longueur du texte. Il faut utiliser length()

  int LongMotChoix = NomChoix[Choix].length();

Ce n'est pas une bonne idée d'utiliser String et pour une constante, ça n'apporte rien.

Merci ca marche.
J'étais pourtant sur d'avoir essayé ça.