Zum Inhalt springen

string + cout + schleife = ?


Gort

Empfohlene Beiträge

Hallo ihr :)

Bin neu hier (und bei c++) und hab 'natürlich' gleich eine frage :floet:

Unkreativ wie ich nunmal bin, wollt ich mir nach dem 'hello world' ein echo schreiben.

Also ich tippe etwas und das gleiche wird mir wieder auf der console wieder ausgegeben, solange bis ich exit eingebe.

Es funktioniert auch 'fast' :D


#include <iostream>

#include <string>


//using namespace std;



int main()

{

	std::string inp = "Hallo ... echo ... \n\n";


	do

	{		

		std::cout << inp << std::endl;

		std::cin >> inp;


	}while (inp != "exit");


	return 0;

}


Hierbei ergeben sich nun 2 probleme.

Zum einen ist es so, dass wenn der String mehr als 2 Worte beinhaltet jedes in einer extra Zeile ausgegeben wird.

Das 2te problem ist, dass die Schleife beendet wird, auch wenn ich exit nur als teil des strings eingebe, aber das ist ja nur die offensichtliche reaktion auf das erste problem, wo jeweils nur ein wort in inp landet.

Meine grobe vorstellung von dem Problem ist, dass die eingabe in einen buffer geht, aus dem cin dann die daten holt, was aber von einem Space unterbrochen wird. Daraus folgt dass cout dieses eine wort ausgibt, die schleife neu anfängt, cin sieht, dass noch was im buffer ist, wodurch eine weitere tastaturabfrage unnötig wird und sich einfach das nächste wort rausholt usw usf.

Was kann ich nun dagegen tun?

mfg

Gort

P.S.: Falls das ein triviales problem ist, dass man sich hätte googeln können (würd ich drauf wetten), entschuldigt bitte, aber anscheinend weiß ich nicht wonach genau ich da suchen soll, da ich leider nix gefunden hab ;P

Link zu diesem Kommentar
Auf anderen Seiten teilen

Danke für den tip :)

Da ergeben sich leider 1-2 andere probleme /: Oder ich mach was falsch..

cin.getline mag anscheinend keine strings, sondern nur char-arrays?

Und nehm ich ein char-array funktioniert der exit irgendwie nicht?

P.S.: Hey! Hinter Dir! Ein dreiköpfiger Affe!

Link zu diesem Kommentar
Auf anderen Seiten teilen

cin.getline mag anscheinend keine strings, sondern nur char-arrays?
Richtig. Du sollst auch gar nicht cin.getline benutzen, sondern die freie Funktion getline, die in <string> deklariert ist. Die nimmt auch std::string.

Und nehm ich ein char-array funktioniert der exit irgendwie nicht?
Bedenke, was == bei Arrays tut.
Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...