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
Mitglied 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

Mitglied seit
20.04.2005
Beiträge
3.778
Alter
39
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
Mitglied 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

Mitglied seit
20.04.2005
Beiträge
3.778
Alter
39
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
Mitglied 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

Mitglied seit
13.12.2005
Beiträge
160
Alter
35
Standort
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

C++ & Einstiegsprobleme - Ähnliche Themen

  • Surface Book1: USB-C to Ethernet-Adapter

    Surface Book1: USB-C to Ethernet-Adapter: Hallo, ich besitze ein Surface Book 1.Besteht die Möglichkeit den Adapter Surface Connect to USB-C zu nutzen und zwar nur um einen USB-C auf...
  • Fehlercode 0x80070052 beim Kopieren von JPG Dateien aus Laufwerk C nach externer Festplatte

    Fehlercode 0x80070052 beim Kopieren von JPG Dateien aus Laufwerk C nach externer Festplatte: Beim Kopieren von JPG Dateien aus Laufwerk C nach externer Festplatte auf Laufwerk G bekomme ich diesen Fehlercode 0x80070052
  • Beim Kopieren von JPG Dateien aus Laufwerk C nach externer Festplatte auf Laufwerk G bekomme ich diesen Fehlercode 0x80070052

    Beim Kopieren von JPG Dateien aus Laufwerk C nach externer Festplatte auf Laufwerk G bekomme ich diesen Fehlercode 0x80070052: Beim Kopieren von JPG Dateien aus Laufwerk C nach externer Festplatte auf Laufwerk G bekomme ich diesen Fehlercode 0x80070052
  • Windows Datenträgerbereinigung für ACER (C:)

    Windows Datenträgerbereinigung für ACER (C:): Sehr geehrte Damen und Herren, Kann ich die in der Zeile Windows- Update-Bereinigung ermittelte Datenmenge von 30GB problemlos löschen, ohne...
  • Update LW C: fastr voll, weiteres LW mit über 300 GB Speicher ignoriert

    Update LW C: fastr voll, weiteres LW mit über 300 GB Speicher ignoriert: Ich möchte ein Win 10 Update durchführen. Mein LW C. mit Betriebssystem hat noch ca. 1,5 GB Speicher frei. Es gibt eine weitere Festplatte mit...
  • Ähnliche Themen

    Oben