error: switch Anzahl ein ganzzahliges C++
Ich habe ein problem beim kompilieren meines C++ - code. Als ich bin immer noch lernen, C++, ich verstehe immer noch nicht, die meisten der erweiterten Befehle noch. Ich habe versucht, erstellen Sie ein Programm, das den Anwender auffordert, Vorname, Nachname, Alter und Geschlecht und die Anzeige zurück an den Benutzer. Dies ist mein Quellcode:
#include <iostream>
int main ()
{
char firstName[20];
char lastName[20];
char age[6];
char gender[3];
int i = 0;
std::cout << "Please enter your full name: ";
std::cin.getline (firstName, 19, ' ');
std::cin.getline (lastName, 19);
std::cout << "Enter your age: ";
std::cin.getline (age, 5);
while (i != 1)
{
std::cout << "Enter your gender (m/f)";
std::cin.getline (gender, 2);
switch (gender)
{
case 'm':
std::cout << "\nHello Mr. ";
i++;
break;
case 'f':
std::cout << "\nHello Mrs. ";
i++;
break;
default:
std::cout << "\nThat is not even a gender!\n";
break;
}
}
std::cout << lastName << "!\n";
std::cout << "You are " << age << " years old.";
return 0;
}
Als ich versucht habe zu kompilieren, die dieses, mein compiler gibt mir die folgende Fehlermeldung:
NameAgeQ.cpp: In function 'int main()':
NameAgeQ.cpp:24:15: error: switch quantity not an integer
Ich habe versucht, den code anderer Programme mit der 'switch' - Anweisung vor und es kann mit Zeichen. Jedoch in der bisherigen Programme, die ich erklären würde, 'Geschlecht' als 'char Geschlecht;' anstelle von 'char Geschlecht [];'.
Warum in diesem speziellen Fall ist der 'switch' - Anweisung nicht funktioniert? Ist es nicht die Unterstützung der array-string?
- Warum macht Ihr source-code haben keine Einrückung in der it?
- Ich denke, dieser link wird lösen alle Ihre Zweifel: stackoverflow.com/questions/4535825/...
Du musst angemeldet sein, um einen Kommentar abzugeben.
Nein, tut es nicht. Eine einzelne
char
ist eine ganze Zahl; ein array nicht. In Ihrem Fall ist, sollte diese Zeile beheben:Das bedeutet, Sie sind mit der ersten
char
im array, das ist jetzt ein integer-Typ wieder.gender
ist ein array, so kann es verwendet werdengetline
.Sie definiert gender als drei Zeichen langen array, aber es scheint, wie definieren Sie ihn als
und verwenden Sie es zum speichern entweder 'm' oder 'f'. Auf diese Weise können Sie mit dem Schalter, als Sie es ohnehin schon sind.
Versuchen, anstelle
gender
mit*gender
im Schalter. Was jetzt passiert, ist, dass Sie ein array als parameter, wenn Sie nur wollen, verwenden Sie die ersten Buchstaben.Der Grund ist, dass das Geschlecht, der name des Arrays ist der pointer auf das erste element eines Arrays, um es zu beheben, sollten Sie entweder
switch((*gender))
oder wie vorher gesagt wurde
switch(Geschlecht[0])