Archiv verlassen und diese Seite im Standarddesign anzeigen : [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
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.
Du könntest entweder jedem String eine eindeutige Nummer zuweisen und dann mit switch/case arbeiten.
Wie ist das gemeint?
Etwa so:
string s1;
int i1;
i1 = ( s1 == "ausdruck_1" ) ? 1;
i1 = ( s1 == "ausdruck_2" ) ? 2;
switch (i1)
{
case 1: ...
}
Gruß
Konstantin
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.
Mit dem MAP Container ist es ja wirklich elegant gelöst. Das habe ich dann auch so übernommen.
Vielen Dank.
Gruß
Konstantin
Powered by vBulletin® Version 4.2.5 Copyright ©2025 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.