Anzeige:
Ergebnis 1 bis 5 von 5

Thema: [C++] switch-Anweisung auch mit String?

  1. #1
    Registrierter Benutzer
    Registriert seit
    05.01.2006
    Beiträge
    44

    Question [C++] switch-Anweisung auch mit String?

    HI Leute,

    kann es sein, dass in C++ die switch-Anweisung mit Strings nicht verwendet werden darf?

    Gruß

    Konstantin
    Elektrotechnik Student

  2. #2
    Registrierter Benutzer Avatar von Boron
    Registriert seit
    07.01.2002
    Beiträge
    827
    Klar darftst du das verwenden.
    Aber es wird nicht funktionieren, da der C-Standard (gilt in diesem Fall auch für C++) vorschreibt: "The controlling expression of a switch statement shall have integer type."
    Du darfst also nur Typen verwenden, die als integer-Zahl abgebildet werden können (char, short, int, long (und Kombinationen), und Adressen).

    Du könntest entweder jedem String eine eindeutige Nummer zuweisen und dann mit switch/case arbeiten, oder du arbeitest mit String-Compare-Funktionen und if() else if() else Anweisungen.
    Gruß Boron (der sich oft wegen mieser Rechtschreibung anderer die Augen reiben muss)

    LINUX IS LIKE AN INDIAN TENT: NO GATES, NO WINDOWS AND AN APACHE INSIDE!
    Hardware Monitoring unter Linux -> http://santafu.sourceforge.net (Temperaturen, Lüfterdrehzahlen und Spannungen)

  3. #3
    Registrierter Benutzer
    Registriert seit
    05.01.2006
    Beiträge
    44
    Zitat Zitat von Boron
    Du könntest entweder jedem String eine eindeutige Nummer zuweisen und dann mit switch/case arbeiten.
    Wie ist das gemeint?

    Etwa so:
    Code:
    string s1;
    int i1;
    
    i1 = ( s1 == "ausdruck_1" ) ? 1;
    i1 = ( s1 == "ausdruck_2" ) ? 2;
    
    switch (i1)
    {
      case 1: ...
    }
    Gruß
    Konstantin
    Elektrotechnik Student

  4. #4
    Registrierter Benutzer Avatar von Boron
    Registriert seit
    07.01.2002
    Beiträge
    827
    Der ? Operator ist zwar meiner Meinung nach extrem widerlich, aber das wäre ja eine Möglichkeit.
    Wird natürlich doof, wenn es um viele mögliche Strings geht. Da ist das nicht mehr sehr performant durch die vielen String-Vergleichs-Aufrufe. 200 Strings -> 200 Aufrufe des ==-Operators .

    Oder schau dir mal das hier an: http://www.sgi.com/tech/stl/Map.html. Das ist doch ganz gut. Und es ist sogar Teil der STL.
    Geändert von Boron (27-05-2006 um 13:55 Uhr)
    Gruß Boron (der sich oft wegen mieser Rechtschreibung anderer die Augen reiben muss)

    LINUX IS LIKE AN INDIAN TENT: NO GATES, NO WINDOWS AND AN APACHE INSIDE!
    Hardware Monitoring unter Linux -> http://santafu.sourceforge.net (Temperaturen, Lüfterdrehzahlen und Spannungen)

  5. #5
    Registrierter Benutzer
    Registriert seit
    05.01.2006
    Beiträge
    44
    Mit dem MAP Container ist es ja wirklich elegant gelöst. Das habe ich dann auch so übernommen.

    Vielen Dank.

    Gruß
    Konstantin
    Elektrotechnik Student

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •