C++ ba mért hozza ki hogy "switch quantity not an integer"?
Figyelt kérdés
string betu;
int c1=0,h1=0,o1=0,n1=0,s1=0;
ifstream myfile2 ("bsa.txt");
myfile2 >> betu;
while(!myfile2.eof())
{
switch(betu)
{
case "C":
c1++;
h1+=2;
o1++;
break;
case "H":
h1++;
h1+=2;
o1++;
break;
case "O":
o1++;
h1+=2;
o1++;
break;
case "N":
n1++;
h1+=2;
o1++;
break;
case "S":
s1++;
h1+=2;
o1++;
break;
}
myfile2 >> betu;
}
2014. ápr. 16. 21:48
1/7 anonim válasza:
Ezek szerint oda char, vagy integer(int) kell, a string nem jó, mivel lényegében char tömb..
2/7 anonim válasza:
Switchben csak integrális típus, char és talán enum lehet.
Eleve a kódod tervezése is hibás egy betű az nem string, hanem egy karakter, tehát
char betu;
legyen.
3/7 anonim válasza:
"talán enum" :) pont az enum és a switch case a case-ben járnak általában (jó, ez szar volt, sorry, de így van:D)
4/7 anonim válasza:
Ha már "char betu" lesz, akkor a "C"-ből legyen 'C' (+ a többi is!), mert ugye karaktert aposztrófok (') közé írunk, stringet pedig idézőjelek (") közé.
5/7 A kérdező kommentje:
Köszi a segítséget!
2014. ápr. 17. 12:34
6/7 anonim válasza:
A "C" egy string literal, azaz egy mutató. Így nem lehet switch-ben használni. A case-eknél csak olyan típus lehet ami egész. Ilyen például a char vagy az enum is, ezek konkréten egész számok, de bármi jó ami implicit kasztolható egésszé.
Cseréld ki a "-t '-re és már működik is.
7/7 anonim válasza:
switch-ben csak sorszámozható típust lehet megadni.
Kapcsolódó kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!