JLI Spieleprogrammierung Foren-Übersicht JLI Spieleprogrammierung

 
 FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen 
 medals.php?sid=3060b72fc830c62cbe54a165e9bbc5daMedaillen   RegistrierenRegistrieren   ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin 

switch mit strings
Gehe zu Seite 1, 2  Weiter
 
Neues Thema eröffnen   Neue Antwort erstellen    JLI Spieleprogrammierung Foren-Übersicht -> Entwicklung
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
Jonathan_Klein
Living Legend


Alter: 37
Anmeldedatum: 17.02.2003
Beiträge: 3433
Wohnort: Siegerland
Medaillen: Keine

BeitragVerfasst am: 29.08.2005, 14:41    Titel: switch mit strings Antworten mit Zitat

also, ich müsste n String switchen:
CPP:
switch(string)
{
case "bla1":
break;
case "blae":
break;
}

das klappt aber weder per char array, noch mit std::string. Was nu? Die Idee war ne textdatei so zu lesen:
Code:

[typ1]
wert1
[typ2]
wert2

halt je nach typ soll der der varaibale des types den wert zuweisen. also, so das man die auch weglassen kann wenn man möchte, dafür möchte ich halt n switch in ner forschleife machen und so die datei imemr weiter abarbeiten.

[edit]Mist, jetzt sinds 40.001 Beiträge...[/edit]
_________________
https://jonathank.de/games/
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
OLiver
Super JLI'ler


Alter: 33
Anmeldedatum: 29.06.2003
Beiträge: 306
Wohnort: Jena
Medaillen: Keine

BeitragVerfasst am: 29.08.2005, 14:45    Titel: Antworten mit Zitat

Wie wärs mit if? Rolling Eyes
_________________
http://www.sieder25.org/ (Siedler 2 - Remake)
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Jonathan_Klein
Living Legend


Alter: 37
Anmeldedatum: 17.02.2003
Beiträge: 3433
Wohnort: Siegerland
Medaillen: Keine

BeitragVerfasst am: 29.08.2005, 14:51    Titel: Antworten mit Zitat

ist kacke. Ich möchtge nicht 35 mal untereinander elseif tippen. Dafür ist switch doch da, oder?
_________________
https://jonathank.de/games/
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
phlip
Mini JLI'ler



Anmeldedatum: 27.08.2005
Beiträge: 39

Medaillen: Keine

BeitragVerfasst am: 29.08.2005, 15:02    Titel: Antworten mit Zitat

[Edit] Hatte das falsch verstanden Embarassed , glaub ich. Naja, vllt hilfs ja doch

Vllt. ein String Array mit den Strings füllen, die du suchen möchtest ,dann mit einer Schleife durchlaufen und jeweils mit if vergleichen (wenns mit if geht, ich weiß nicht obs geht)

CPP:
String Test[35] = { Bla, ... }; /*Keine Ahnungs ob das so geht*/

for(int i = 0; i < 35; i++)
{
    if(String == Test[35])
    {
       //Volltreffer
    }
}


Nicht getestet, weiss nicht obs geht.
Wär mein Ansatz für das Problem


Zuletzt bearbeitet von phlip am 29.08.2005, 15:07, insgesamt einmal bearbeitet
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
PeaceKiller
JLI Master


Alter: 36
Anmeldedatum: 28.11.2002
Beiträge: 970

Medaillen: Keine

BeitragVerfasst am: 29.08.2005, 15:05    Titel: Antworten mit Zitat

Gibt's da vielleicht einen extra Operator dafür?
_________________
»If the automobile had followed the same development cycle as the computer, a Rolls-Royce would today cost $100, get a million miles per gallon, and explode once a year, killing everyone inside.«
– Robert X. Cringely, InfoWorld magazine
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
GreveN
JLI Master


Alter: 38
Anmeldedatum: 08.01.2004
Beiträge: 901
Wohnort: Sachsen - Dresden
Medaillen: Keine

BeitragVerfasst am: 29.08.2005, 15:09    Titel: Antworten mit Zitat

Switch geht definitiv so nicht. Switch ist nur für ganze Zahlen zulässig.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Yahoo Messenger MSN Messenger
OLiver
Super JLI'ler


Alter: 33
Anmeldedatum: 29.06.2003
Beiträge: 306
Wohnort: Jena
Medaillen: Keine

BeitragVerfasst am: 29.08.2005, 15:17    Titel: Antworten mit Zitat

Zitat:

ist kacke. Ich möchtge nicht 35 mal untereinander elseif tippen. Dafür ist switch doch da, oder?


Das ist doch wurscht? Ob du nun

CPP:
case "bliblablub":
machedasunddas
break;


oder

CPP:
if else(str == "bliblablub")
{
machedasunddas
}


schreibst, macht keinen großen Unterschied...
_________________
http://www.sieder25.org/ (Siedler 2 - Remake)
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
knallbunt
Mini JLI'ler



Anmeldedatum: 16.08.2005
Beiträge: 7

Medaillen: Keine

BeitragVerfasst am: 29.08.2005, 15:18    Titel: Antworten mit Zitat

Code:
#include <map>
#include <iostream>
#include <string>

int main() {
    std::map <std::string, int> m;
    m["bla1"] = 1;
    m["bla2"] = 2;
   
    std::string s("bla2");
   
    switch(m[s]) {
        case 1:
            std::cout << "bla1" << std::endl;   
            break;
        case 2:
            std::cout << "bla2" << std::endl;   
            break;
    }   
}


wie wärs damit?
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Jonathan_Klein
Living Legend


Alter: 37
Anmeldedatum: 17.02.2003
Beiträge: 3433
Wohnort: Siegerland
Medaillen: Keine

BeitragVerfasst am: 29.08.2005, 15:23    Titel: Antworten mit Zitat

ne idee, aber zuu umständlich Wink
Ich denke ich nehme doch else if, weilsdie zweit schänste version ist.
_________________
https://jonathank.de/games/
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
PeaceKiller
JLI Master


Alter: 36
Anmeldedatum: 28.11.2002
Beiträge: 970

Medaillen: Keine

BeitragVerfasst am: 29.08.2005, 15:36    Titel: Antworten mit Zitat

OLiver hat Folgendes geschrieben:
Zitat:

ist kacke. Ich möchtge nicht 35 mal untereinander elseif tippen. Dafür ist switch doch da, oder?


Das ist doch wurscht? Ob du nun

CPP:
case "bliblablub":
machedasunddas
break;


oder

CPP:
if else(str == "bliblablub")
{
machedasunddas
}


schreibst, macht keinen großen Unterschied...


Nicht ganz aus:
CPP:
case "a":
do();
case "b":
case "c":
do2()
break;

wird nämlich
CPP:
else if(str == "a")
{
do();
do2();
}
else if(str == "a" ||  str == "b")
{
do2();
}

_________________
»If the automobile had followed the same development cycle as the computer, a Rolls-Royce would today cost $100, get a million miles per gallon, and explode once a year, killing everyone inside.«
– Robert X. Cringely, InfoWorld magazine
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
OLiver
Super JLI'ler


Alter: 33
Anmeldedatum: 29.06.2003
Beiträge: 306
Wohnort: Jena
Medaillen: Keine

BeitragVerfasst am: 29.08.2005, 15:45    Titel: Antworten mit Zitat

PeaceKiller hat Folgendes geschrieben:
OLiver hat Folgendes geschrieben:
Zitat:

ist kacke. Ich möchtge nicht 35 mal untereinander elseif tippen. Dafür ist switch doch da, oder?


Das ist doch wurscht? Ob du nun

CPP:
case "bliblablub":
machedasunddas
break;


oder

CPP:
if else(str == "bliblablub")
{
machedasunddas
}


schreibst, macht keinen großen Unterschied...


Nicht ganz aus:
CPP:
case "a":
do();
case "b":
case "c":
do2()
break;

wird nämlich
CPP:
else if(str == "a")
{
do();
do2();
}
else if(str == "a" ||  str == "b")
{
do2();
}


In seinem Post stand aber nichts von solchen "Sonderfällen":

CPP:
switch(string)
{
case "bla1":
break;
case "blae":
break;
}

_________________
http://www.sieder25.org/ (Siedler 2 - Remake)
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Patrick
Dark JLI Master



Anmeldedatum: 25.10.2004
Beiträge: 1895
Wohnort: Düren
Medaillen: Keine

BeitragVerfasst am: 29.08.2005, 15:55    Titel: Antworten mit Zitat

Switch geht nur für einzelwerte nicht für zusammengesetzte werte!

Also nur
case 'a'
geht oder
case 1

Aber Strings gehen definitiv nicht! Wenn dann sollte man if/else nehmen oder sowas feines wie die WindowsX nehmen bzw. da mit Metaprogrammierung dran gehen.
_________________
'Wer der Beste sein will muss nach Perfektion streben und jede Gelegenheit nutzen sich zu verbessern.' - KIA
[ German Game Dev | Boardsuche hilft sehr oft | Google rockt | Wie man Fragen richtig stellt | ICQ#: 143040199 ]
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
AFE-GmdG
JLI MVP
JLI MVP


Alter: 45
Anmeldedatum: 19.07.2002
Beiträge: 1374
Wohnort: Irgendwo im Universum...
Medaillen: Keine

BeitragVerfasst am: 29.08.2005, 16:24    Titel: Antworten mit Zitat

Ich habe eine Idee, weiss aber nicht, ob sie Praktikabel ist / funktioniert:
std::string hat doch einen Vergleichsoperator (operator==) definiert. Wird dieser (intern) nicht von Switch verwendet?
_________________
CPP:
float o=0.075,h=1.5,T,r,O,l,I;int _,L=80,s=3200;main(){for(;s%L||
(h-=o,T= -2),s;4 -(r=O*O)<(l=I*I)|++ _==L&&write(1,(--s%L?_<(L)?--_
%6:6:7)+\"World! \\n\",1)&&(O=I=l=_=r=0,T+=o /2))O=I*2*O+h,I=l+T-r;}
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
DirectXer
Dark JLI'ler



Anmeldedatum: 05.02.2005
Beiträge: 1201
Wohnort: Köln
Medaillen: Keine

BeitragVerfasst am: 29.08.2005, 16:52    Titel: Antworten mit Zitat

OLiver hat Folgendes geschrieben:
Zitat:

ist kacke. Ich möchtge nicht 35 mal untereinander elseif tippen. Dafür ist switch doch da, oder?


Das ist doch wurscht? Ob du nun

CPP:
case "bliblablub":
machedasunddas
break;


oder

CPP:
if else(str == "bliblablub")
{
machedasunddas
}


schreibst, macht keinen großen Unterschied...

klar, wurscht is das net.

<klugscheißmodus>
Aber abgesehen davon, würden beide Sachen net funzen. 1. kann man(wie Patrick schon gesagt hat) keine strings in switch abfragen. 2. gibts kein
CPP:
if else()
Razz
</klugscheißmodus>

Naja, ich würde mir dafür einen eigenen Operator machen, falls keiner vorhanden wäre. Alternatuv dazu kann man aber auch if/else's verwenden, gibt ja copy'n'paste Rolling Eyes

Gruß DirectXer
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
AFE-GmdG
JLI MVP
JLI MVP


Alter: 45
Anmeldedatum: 19.07.2002
Beiträge: 1374
Wohnort: Irgendwo im Universum...
Medaillen: Keine

BeitragVerfasst am: 29.08.2005, 17:11    Titel: Antworten mit Zitat

Wenn es sich nur um ein paar Strings handelt, die Fest stehen, kannst du dann nicht auf Defines ausweichen?
Code:
#define STR_START 0x00000001
#define STR_END   0x00000002
#define ...       0x12345678
Diese kannst du dann ganz leicht per switch abfragen.
Ansonsten: Use c# - dort geht das Smile
_________________
CPP:
float o=0.075,h=1.5,T,r,O,l,I;int _,L=80,s=3200;main(){for(;s%L||
(h-=o,T= -2),s;4 -(r=O*O)<(l=I*I)|++ _==L&&write(1,(--s%L?_<(L)?--_
%6:6:7)+\"World! \\n\",1)&&(O=I=l=_=r=0,T+=o /2))O=I*2*O+h,I=l+T-r;}
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    JLI Spieleprogrammierung Foren-Übersicht -> Entwicklung Alle Zeiten sind GMT
Gehe zu Seite 1, 2  Weiter
Seite 1 von 2

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.


Powered by phpBB © 2001, 2005 phpBB Group
Deutsche Übersetzung von phpBB.de

Impressum