[C++]String W Case ?

0

witam chcialem sobie zrobic tak ze wcisne 1 i mam nowa gre
wpisuje nazwe wioski i wyswietla sie : Gratulacje Twoja Wioska Juz Istnieje ;) Nazwa Wioski To : ZONK!
no wlasnie zonk!
zadeklarowalem zmienna nazwawioski
int nazwawioski;
ale oczywiscie gdy chcialem wyswietlic tekst to sa cyfry
prÓbowalem tez string nazwawioski;
ale pisze : jump to case label , croses initialization of ':nazwawioski'

Nie Wiecie jak to zrobic by wyswietlal sie tekst , zamiast cyfer ?
Bardzo Dziekuje Za JakieKolwiek Odpowiedzi! :)

0

W case nie możesz użyć std::string.

0

jezeli nie moge to czy mozesz mi powiedziec jak zrobic zeby tekst byl wyswietlany zamiast liczb?

0

powiedzmy tak : jak sobie wpisuje nazwe wioski np nazwa : diminikolandia

potem wyswietla sie tekst : gratulacje nazwa wioski to : diminikolandia
jezeli zadeklaruje zmienna na int to bedzie : gratulacje nazwa wioski to : 289208202
rozumiesz mnie teraz?
jeszcze kod:
[code]
#include <iostream>
#include <windows.h>
using namespace std;

int main()
{

cout << " WarZor 1 " << endl;
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_GREEN | FOREGROUND_INTENSITY);
cout << "--------------------------------------------------------------------------------" <<endl;
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_GREEN | FOREGROUND_BLUE | FOREGROUND_INTENSITY); //w tym przypadku zmieszaliśmy kolor niebieski z zielonym i dodaliśmy intensywność.
cout << " Nowa Gra " << endl;
cout << " [1] Nowa Gra || [2] Wyjdz" <<endl;
cout << "--------------------------------------------------------------------------------" <<endl;

cout << "Komenda :" <<endl;
int menu;
cin >> menu;
switch ( menu )
{
case 1:
cout << "Nazwa Wioski :" <<endl;

cout << "Gratulacje ! Twoja Wioska Juz Istnieje ;) Nazwa Wioski To :"  <<endl;
break;
case 2:
system("EXIT");
break;
default:
if (cin.fail())
cout << "Nie Odnaleziono Komendy" <<endl;

break;

}

return 0;

}
[/code]

0

Do przechowywania tekstu w C++ powinieneś użyć std:

string nazwa;

cout << "Podaj costam" << endl;
cin >> nazwa;
cout << "Wpisales: " << nazwa << endl; 
0

dopiero napisales ze nie moge uzywac string w case zreszta tez to wiem
i to probowalem ...

0

std::string nie może być zmienną sterującą w switch, poza tym można go we wnętrzu switch'a używać

0

...

    case 1:
      cout << "Nazwa Wioski: " << endl;

      string super_nazwa_wioski;
      cin >> super_nazwa_wioski;
 
      cout << "Gratulacje! Twoja Wioska Juz Istnieje ;) Nazwa Wioski To :" << super_nazwa_wioski << endl;
      break;

Tylko dodaje sobie na początku

#include <string>
0

chyba jednak nie mozna bo probuje i nic z tego .... w ogole nie wiem dlaczego w case nie mozna uzywac stringa to jak niby mam wyswietlic tekst z cina do tekstu ?!

0

nie da sie tak to samo dodalem tego includa i nic

0

MOŻNA! Pokaż kod to powiem Ci gdzie masz błąd

0

O, złapaliśmy się.

Za case i przed break musisz zrobić sobie nowy scope, czyli dodać { }, będzie to wyglądało tak:

case 1: {
...
}
break;

Wyjaśnienie jest takie. Kiedy definiujesz string w 1. case to zakres jego ważności kończy się dopiero z końcem całego bloku switch. Czyli w drugim case zmienna ta powinna być dostępna. Jeżeli jednak przejdziesz od razu do tego drugiego konstruktor nie będzie wywołany a to w C++ nie może mieć miejsca.

0

tak ! dziala , dziekuje Ci endrju oraz byku_guzio za podpowiedzi :)

1 użytkowników online, w tym zalogowanych: 0, gości: 1