Easeful Opublikowano 3 Stycznia 2010 Opublikowano 3 Stycznia 2010 Elo! Gdy dałem w c++ string zmienna="siema"; switch(zmienna) { ... } Napisało mi error że argument podany do switch nie jest integer
Egzekutor Opublikowano 3 Stycznia 2010 Opublikowano 3 Stycznia 2010 Nie da się na stringach zadziałać instrukcją switch. Switch działa tylko na typy całkowite (int). Najlepiej zrób to instrukcją "if" lub napisz funkcję przekształcającą dowolny string na liczbę.
Easeful Opublikowano 3 Stycznia 2010 Autor Opublikowano 3 Stycznia 2010 ok, a jeszcze jedno pytanie: jak zrobić takie coś w c++ jak w gmie takie cos: GML imie="edgar"; tekst=imie+" elo";
Egzekutor Opublikowano 3 Stycznia 2010 Opublikowano 3 Stycznia 2010 string imie="edgar"; string tekst=imie+= " elo"; W rezultacie w stringu "tekst" znajdzie się "edgar elo".
Easeful Opublikowano 3 Stycznia 2010 Autor Opublikowano 3 Stycznia 2010 to czemu mi to nie działa: string proc=""; cout << "Podaj nazwe procesu: "; cin >> proc; system("START cmd /c taskkill /f /im " + proc);
PsichiX Opublikowano 3 Stycznia 2010 Opublikowano 3 Stycznia 2010 bo nie czytasz co wywala kompilator. system(string("START cmd /c taskkill /f /im " + proc).c_str());
Egzekutor Opublikowano 3 Stycznia 2010 Opublikowano 3 Stycznia 2010 Nie jestem pewien ale może musisz załadować jakąś bibliotekę?
PsichiX Opublikowano 3 Stycznia 2010 Opublikowano 3 Stycznia 2010 lepiej zrobić własne makro uniwersalnego switcha jesli chcesz zachowac jako taka stala logike, ale i tak ify to juz lepszy pomysl: #define uswitch(var) for(unsigned int __T__=0,__PTR__=(unsigned int)&var;__T__<1;__T__++) #define ucase(type,val) if(*(type*)__PTR__==val) string s="test"; uswitch(s) // musisz koniecznie podac nazwe zmiennej/stalej ktora istnieje, nie zas bezposrednia wartosc { ucase(string,"test") // pierw podajesz typ zmiennej/stalej a nastepnie wartosc do porownania. Typ musi miec operator porownania, inaczej nie zadziala { cout<<"dobrze"; } ucase(string,"dupa") { cout<<"zle"; } }
Rekomendowane odpowiedzi