Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

Errschaffer

Alter Hase

  • »Errschaffer« ist der Autor dieses Themas

Beiträge: 865

Wohnort: Frankfurt

  • Private Nachricht senden

1

08.11.2008, 14:46

[Erledigt] Kleiner Fehler beim String auslesen

Hallo,
ich habe hier eine Funktion die, die Spielernamen abfragt.

C-/C++-Quelltext

1
2
3
4
5
6
void Spielernamen ()
{
cout<<"Spieler 1 bitte geben sie ihren Namen ein"<<endl;
cin.get (Spieler1.Name,29);
cin.ignore ();
}

Nur wenn ich die Namen wieder auslesen will...

C-/C++-Quelltext

1
cout<<Spieler1.Name<<" du bist am Zug"<<endl;


... fehlt immer der erste Buchstabe. Also bei "Max Musterman" das M.
Mache ich habe ein Leerzeichen wird es korrekt ausgegben.
Wie kann man das umgehen?

drakon

Supermoderator

Beiträge: 6 513

Wohnort: Schweiz

Beruf: Entrepreneur

  • Private Nachricht senden

2

08.11.2008, 14:51

C-/C++-Quelltext

1
2
3
4
5
void Spielernamen ()
{
cout<<"Spieler 1 bitte geben sie ihren Namen ein"<<endl;
cin >> Spieler1;
}

3

08.11.2008, 15:13

Hm evtl. ist einfach noch das Escapezeichen im Eingabestream. Mach den mal vorher leer, dann soltle das gehen ...
Devil Entertainment :: Your education is our inspiration
Der Spieleprogrammierer :: Community Magazin
Merlin - A Legend awakes :: You are a dedicated C++ (DirectX) programmer and you have ability to work in a team? Contact us!
Siedler II.5 RttR :: The old settlers-style is comming back!

Also known as (D)Evil

4

08.11.2008, 15:20

Zitat von »"drakon"«

C-/C++-Quelltext

1
2
3
4
5
void Spielernamen ()
{
cout<<"Spieler 1 bitte geben sie ihren Namen ein"<<endl;
cin >> Spieler1;
}


würde das programm hier nicht beim ersten leerzeichen anhalten?

Edit: bzw. nicht weiter einlesen

drakon

Supermoderator

Beiträge: 6 513

Wohnort: Schweiz

Beruf: Entrepreneur

  • Private Nachricht senden

5

08.11.2008, 15:30

Zitat von »"franzelot"«


würde das programm hier nicht beim ersten leerzeichen anhalten?

Edit: bzw. nicht weiter einlesen


Ja. Darauf habe ich nicht geachtet, dass er einen vollen Namen will.

6

08.11.2008, 15:38

Da würde ich std::getline() benutzen:

C-/C++-Quelltext

1
2
3
std::string Str;
std::cout << "Namen eingeben: ";
std::getline(std::cin, Str);

Errschaffer

Alter Hase

  • »Errschaffer« ist der Autor dieses Themas

Beiträge: 865

Wohnort: Frankfurt

  • Private Nachricht senden

7

08.11.2008, 17:24

Ok hab jetzt einfach mir einer for schleife alles geleert, jetzt gehts.
Danke.

Anonymous

unregistriert

8

08.11.2008, 17:37

Ich hab dir schon mal Quelltext zu diesem Thema gegeben, warum benutzt du ihn nicht?

Werbeanzeige