C++ & Einstiegsprobleme

Diskutiere C++ & Einstiegsprobleme im Programmierung Forum im Bereich Software Forum; Hallo, ich versuche mich gerade mittels des Buchs "C++ Lernen und professionell anwenden" ein bisschen einzuarbeiten. Stecke gerade im Kapitel...
questmark

questmark

Threadstarter
Dabei seit
21.07.2005
Beiträge
14
Hallo,

ich versuche mich gerade mittels des Buchs "C++ Lernen und professionell anwenden" ein bisschen einzuarbeiten.

Stecke gerade im Kapitel 3. In einer der Übungen soll man ein Programm schreiben, das eine Zeichenkette definiert und deren Länge auf dem Bildschirm ausgibt.
Im Anschluss sollen zwei Textzeilen von der Tastatur eingelesen werden, und miteinander verkettet werden.
Ist übrigens eine Win32 Konsolenanwendnung.

Mein Code sieht bis auf die Variablenbezeichnungen eigentlich wie die Lösung aus:

Code:
#include <iostream>
#include <string>
using namespace std;

int main()
{
string erfolg("Schon wieder was dazugelernt!"),
 prompt("Bitte geben Sie zwei Textzeilen ein!"),
 zeile1, zeile2, summe;

cout << "Die Zeichenkette \"" << erfolg <<"\" ist " << erfolg.length()
 << " Zeichen lang\n" << endl;

cout << prompt << endl;

getline( cin, zeile1);
getline( cin, zeile2);

summe = zeile1 + " * " + zeile2;
cout << summe << endl;

return 0;
}
Komischerweise zeigt das Programm aber nach dem zweiten getline nicht direkt die verknüpfte Zeichenkette an, sondern der Cursor springt noch einmal in eine neue Zeile.
In der kann man dann eingeben was man will, oder auch mit der Returntaste direkt bestätigen. Erst dann wird die verküpfte Zeichenkette angezeigt.

Kann mir das irgend jemand erklären?
 
M

ModellbahnerTT

Dabei seit
20.04.2005
Beiträge
3.778
Alter
40
Hallo questmark,

In dieser Zeile möchtest du sicherlich zeile1 und zeile2 zusammenrechnen oder?
summe = zeile1 + " * " + zeile2;

Diese zeile hat dann wie folgt auszusehen:
summe = zeile1 + zeile2;

ModellbahnerTT


PS: kleiner Tip damit du einen besseren Überblick über deine Variablen hast kannst du den Datatyp an die Variable voransetzen.
 
questmark

questmark

Threadstarter
Dabei seit
21.07.2005
Beiträge
14
ZITATDiese zeile hat dann wie folgt auszusehen:
summe = zeile1 + zeile2;[/b]
Nein, nein. Die Zeile hat schon ihre Richtigkeit. Der Asterix(Stern) gehört zur Aufgabenstellung.
Die zwei Strings sollen auf diese Weise miteinander verkettet werden.

Was ich nicht begreife ist, das getline dreimal aufgerufen wird.
Ich gebe den ersten Teilstring ein und schließe mit Return ab.
Anschließend den zweiten Teilstring und Return.

Ich hätte dann erwartet, das der Cursor in die nächste Zeile springt, und mir den verketteten String ausgibt.
Das passiert aber nicht. Stattdessen springt der Cursor nach dem zwei Return (zweiter Teilstring) in eine neue Zeile.
In der könnte man dann ebenfalls Text eingeben. Erst wenn man in dieser Zeile Return drückt, wird der verkettete String ausgegeben.

Falls es irgendwas nützt. Ich schreibe das Programm mit einer VisualC++ Autorenedition, die dem Buch beigelegen hat.

Darin wähle ich immer "Win32 Konsolenanwendung" und erstelle in dieser dann eine "C++ Quellcodedatei.
ZITAT
kleiner Tip damit du einen besseren Überblick über deine Variablen hast kannst du den Datatyp an die Variable voransetzen.[/b]
Wie ist das gemeint? Kannst du mir da mal auf die Sprünge helfen?
 
M

ModellbahnerTT

Dabei seit
20.04.2005
Beiträge
3.778
Alter
40
Setze einfach mal bei der ersten getline Zeile einen Haltepunkt(F9) und debuge dann jeden Schritt mit F5 weiter somit kommst du dem Problem vielleicht auf die schliche. Sollte dies nicht funktionieren da werde ich das Programm morgen mal mit meiner Autorenversion des VC++ testen und mich auf die Suche begeben und den Fehler finden.

zu dem Punkt mit dem Datentyp hier mal einige Beispiele:

CString CS_eingabe1;
Integer I_zahlen;
char C_buchstabe;
float F_gleitzahlen;
double D_zahlengrosserInteger;

Variable besteht aus zwei Teilen der erste gibt den Datentyp an und der zwei ist der eigentliche variablenname.

ModellbahnerTT
 
questmark

questmark

Threadstarter
Dabei seit
21.07.2005
Beiträge
14
So, habe mal mit meinem beschränkten Wissen mittels F5 / F9 das Programm debuggt wie du gesagt hast.
Aber selbst unter der Disassemblierung im Assemblercode habe ich nichts Auffälliges gefunden.

Ich habe sogar die Lösung des Buchs buchstabengetreu abgeschrieben ( inklusive der Kommentare - man weiß ja nie :deal) aber trotzdem zeigt sich dieses merkwürdige Verhalten.

Ich begreife einfach nicht den Ursprung der dritten Zeile. Ist das vielleicht ein VisualC++ spezifisches Problem?

Übrigens danke für den guten Tip mit der Variablenbezeichnung. Werd ich mir auf alle Fälle merken. Kann nützlich sein, wenn ich in 15 Jahren Windows "Hasta La" (ist nur der Arbeitstitel :deal) programmiere.
Wird auf alle Fälle eine virtuelle Umgebung mitbringen, mit dem man dann alten Windows Vista Code ausführen kann. :hehe
 
compumanc

compumanc

Dabei seit
13.12.2005
Beiträge
160
Alter
36
Ort
Ulm & Lindau
hab das jetzt mal bei mir getestet, läuft einwandfrei, benutze aber borland builder 6 und ich habe nichts verändert bis auf return(0), da hab ich getch(); geschrieben damit das konsolenfenster nicht gleich zu geht. für getch(); hab ich natürlich noch conio includiert.
warum das jetzt so bei visual ist...
 
Thema:

C++ & Einstiegsprobleme

Oben