Frage zur Arraydeklaration



  • Hallo! Ich bekomm das gerade irgendwie nicht hin, ich habe folgende Arrays:

    const char *Sprache_1[] =
    {
      string_0,
      string_1,
      string_2,
      string_3,
      string_4,
      string_5
    };
    
    // Sprache_2 usw.
    

    Jetzt möchte ich über einen Index "languageID" (0: Sprache 1, 1=Sprache 2 usw) jeweils den richtigen String rausfischen:

    const char* langText[][2] = {
        *Sprache_1,
        *Sprache_2
    };
    

    Ist das soweit überhaupt richtig?

    Mein Zugriff sieht momentan so aus und liefert nichts zurück

    langText[languageID][stringID]
    

    😕



  • Um diese Auslesungssyntax zu erreichen kann man auch folgendes machen:

    #include <vector>
    #include <string>
    std::vector<std::vector<std::string> > Sprachensammlung;
    Sprachensammlung.resize(AnzahlSprachen);
    Sprachensammlung[0].resize(WorteDerErstenSprache);
    Sprachensammlung[0][0] = "Erstes Wort der ersten Sprache";
    

    Praktischer Einsatz:

    #include <vector>
    #include <string>
    std::vector<std::vector<std::string> > Languages;
    enum LanguageCode
    {
      lcEnglish = 0,
      lcGerman = 1,
      lcCount = 2
    };
    Languages.resize(lcCount);
    Languages[lcEnglish].push_back("house");
    Languages[lcGerman].push_back("haus");
    


  • EOutOfResources schrieb:

    Um diese Auslesungssyntax zu erreichen kann man auch folgendes machen:

    #include <vector>
    #include <string>
    std::vector<std::vector<std::string> > Sprachensammlung;
    Sprachensammlung.resize(AnzahlSprachen);
    Sprachensammlung[0].resize(WorteDerErstenSprache);
    Sprachensammlung[0][0] = "Erstes Wort der ersten Sprache";
    

    Das muss aber leider wie im Eingangspost gelöst werden, da ich auf einem System arbeite, wo mir die C++-Bibliothek mit Vektoren usw. nicht zur Verfügung steht ⚠



  • durcheinander schrieb:

    Das muss aber leider wie im Eingangspost gelöst werden, da ich auf einem System arbeite, wo mir die C++-Bibliothek mit Vektoren usw. nicht zur Verfügung steht ⚠

    Wo ist das? Die STD ist ja dafür geschaffen worden, überall eingesetzt werden zu dürfen.



  • EOutOfResources schrieb:

    durcheinander schrieb:

    Das muss aber leider wie im Eingangspost gelöst werden, da ich auf einem System arbeite, wo mir die C++-Bibliothek mit Vektoren usw. nicht zur Verfügung steht ⚠

    Wo ist das? Die STD ist ja dafür geschaffen worden, überall eingesetzt werden zu dürfen.

    auf einem Mikrocontroller 😉



  • So:

    typedef const char* String;
    typedef String* Wordlist;
    String WordsLang01[WordCntLang01];
    String WordsLang02[WordCntLang02];
    Wordlist Languages[] = 
    {
      WordsLang01,
      WordsLang02
    };
    

    Praktischer Einsatz:

    typedef const char* String;
    typedef String* Wordlist;
    String English[] = 
    {
      "hello",
      "house"
    };
    String German[] = 
    {
      "hallo",
      "haus"
    };
    Wordlist Languages[] = 
    {
      English,
      German
    };
    Languages[0][0] = "apple"
    Languages[1][0] = "apfel"
    

  • Mod

    const char* deutsch[]=
      {
        "Hallo Welt",
        "Handy",
        "Beamer",
        "Old Timer",
        "Smoking"
      };
    
    const char* english[]=
      {
        "Hello world",
        "mobile",
        "projector",
        "vintage car",
        "tuxedo"
      };
    
    const char **sprachen[2]=
      {
        deutsch,
        english
      };
    

    Zugegeben: EOutOfResources Lösung ist viel schöner 👍 , aber dafür zeigt dir meine, wo dein Fehler war.



  • Ich danke euch beiden 🙂


Anmelden zum Antworten