string frage
-
Hallo
Ich muss in der schule ein Würfelspiel in textform machen. Als kleines Extra wollte ich einfügen das man sein Namen eingeben kann da für brauch ich ja eine String Variable.die wollte ich so machen da ich die Anzeige als Unterprogramm laufen habe.
#include <conio.h> #include <iostream> int Runde=1; string Sp1Name; // Name des ersten Spielers string Sp2Name; // Name des zweiten Spielers void Anzeige() { cout <<"*************************"; cout <<"*************************"; cout <<"*************************"; cout <<" Spieler 1*********** Spieler 2***"; cout <<"Name:" << Sp1Name <<"Name:" <<Sp2Name; . . . } void main() { cout <<"Name des ersten Spielers"; cin >> Sp1Name; cout <<"Name des zweiten Spielers"; cin >> Sp2Name; Anzeige(); getch(); }Wenn ichs nun Kompelieren will kommt ein fehler und zwar
error C2146: Syntaxfehler: Fehlendes ';' vor Bezeichner 'Name1' error C4430: Fehlender Typspezifizierer - int wird angenommen. Hinweis: "default-int" wird von C++ nicht unterstützt. error C4430: Fehlender Typspezifizierer - int wird angenommen. Hinweis: "default-int" wird von C++ nicht unterstützt. error C2146: Syntaxfehler: Fehlendes ';' vor Bezeichner 'Name2' error C4430: Fehlender Typspezifizierer - int wird angenommen. Hinweis: "default-int" wird von C++ nicht unterstützt. error C2086: 'int string': NeudefinitionKann ich ein string überhaupt so benutzen oder nur als globale Variable
ich hoffe ihr könnt mir weiter helfen
-
#include <conio.h> #include <iostream> #include <string> void Anzeige(std::string& Sp1Name, std::string& Sp2Name) { std::cout <<"*************************"; std::cout <<"*************************"; std::cout <<"*************************" << std::endl;; std::cout <<" Spieler 1*********** Spieler 2***" << std::endl; std::cout <<"Name: " << Sp1Name <<" Name: " <<Sp2Name << std::endl; } int main() { using namespace std; int Runde=1; string Sp1Name; // Name des ersten Spielers string Sp2Name; // Name des zweiten Spielers cout <<"Name des ersten Spielers: "; cin >> Sp1Name; cout <<"Name des zweiten Spielers: "; cin >> Sp2Name; Anzeige(Sp1Name, Sp2Name); getch(); return 0; } :xmas2:
-
Kleiner Hinweis zu dem was mein Vorposter geändert hat und warum.
**1.**Globale Variable wie deine Spielernamen sind nicht gerade schöner Stil und führen des öfteren sogar zu Problemen.
2. Wenn du mit strings arbeiten willst, vergiss bitte nicht den Header string zu includieren ála#include<string>3. Wenn du den Namespace verwendest, dann benutze ihn bitte in Verbindung mit den Namensraumauflöser, Bsp:
std::cout//oder std::string//oder std::cinSo wie es mein Vorposter ja auch gemacht hat.
-
Zusätzlich zu dem bereits Gesagten:
void main()ist nicht Standard-C++. Nimm stattdessenint main().- Gleiches gilt für
<conio.h>bzw.getch(). Damit die Konsole offen bleibt, kannst dustd::cin.get()verwenden, dazu gibt es hier im Forum auch einen FAQ-Beitrag. - Nachtgespenst, ich würde die Strings nicht als Referenz, sondern als Const-Referenz übergeben, da sie in der Funktion nicht verändert werden.
-
Hi
Danke für die Tipps, machen das erst seit ein paar Wochen. Werde dann mal den Still so anpassen. Unsere Lehrer meinte wäre nicht so schlimm wenn man das so macht.
-
Tungild schrieb:
Unsere Lehrer meinte wäre nicht so schlimm wenn man das so macht.
Dem Lehrer gebe ich eine 5- für seinen Stil. Ach lehren wir den Schülern einen schlechten Stil, merkt eh keiner...
-
asc schrieb:
Ach lehren wir den Schülern einen schlechten Stil, merkt eh keiner...
Diese Einstellung scheinen leider relativ viele Lehrer zu haben. Wobei ein Teil davon sich dessen nicht mal selbst bewusst ist...