Forum: PC-Programmierung Neueinstieg c++. Problem mit visual c++


von Micha (Gast)


Lesenswert?

hallo Leute,

ich habe nach einigen Jahren noch mal angefangen mit c++. Wie oben
ersichtlich habe ich visual c++.
Um erst mal keine Probleme zu haben, habe ich ein klassisches hello
world Programm angegangen. Das Problem, was mich wahnsinnig macht ist,
daß ich keine Ausgabe erhalte.

Also ich habe eine leere win32 Anwenung erzeugt, eine datei ins Projekt
eingefügt und folgenden code verwendet:
#include <conio.h>
#include <iostream.h>

int main()
{
  cout<<"was zu sehen?";
  _getch();
  return 0;
}

das wird compiliert und das _getch() klappt auch, aber es gibt keien
Ausgabe... woran kann das liegen? Ich begreife das nicht.

schönen Dank

von Frank (Gast)


Lesenswert?

Wir haben mal gelernt, dass man #include <iostream>" ohne ".h"
schreibt, dazu dann noch ein "using namespace std;"

Bei mir geht Dein Programm insofern, dass der Text ausgegeben wird.
Allerdings erst nach dem Tastendruck. Füge mal noch ein "<< endl" an,
damit veranlasst Du, dass der Text sofort ausgegeben wird.

von Micha (Gast)


Lesenswert?

Ich werde das nachher sofort mal ausprobieren.
Mir dämmert irgendwas in der Richtung, daß man sich nicht sicher sein
kann, wann genau der Ausgangspuffer geleert wird.
Mit endl forciert man die Ausgabe? guter Tip
Wie gesagt, ist ein Neueinstieg ich hab zig Jahre Pause gemacht mit
entsprechender Halbwertzeit an Wissen kann man sich denken wie mein
Kenntnisstand derzeit ist. :-(

Besten Dank erstmal.
Wenn es noch Probleme gibt melde ich mich wieder

von Micha (Gast)


Lesenswert?

Nachtrag: ja klappt. besten Dank!

Eine Frage tauchte da noch auf. Wenn ich anstatt endl zu schicken ein
fflush(stdout) mache. Ist der Text dennoch nicht sichtbar.
Das holt mich nach meiner kurzen Sternstunde wieder runter, dachte ich
doch ich hätte das Problem verstanden.

Kannst du mir erklären, weshalb das nicht erfolgreich ist?

von Marco S (Gast)


Lesenswert?

Das endl wirkt wie printf("\n"). Wenn du nur die Ausgabe auffrischen
willst, rufe cout.flush(); auf.

Gruß Marco

von Micha (Gast)


Lesenswert?

In Ordnung ich bin jetzt ruhig und melde mich nur im Falle von dicken
Problemen.... << flush.
Da habe ich was durcheinander gebracht. sry

von Frank (Gast)


Lesenswert?

endl forciert auch die ausgabe.

von Karl H. (kbuchegg)


Lesenswert?

Was Du aus dem bisherigen mitnehmen solltest:

In C++ gibt es prinzipiell 2 Ausgabemethoden:

Die eine basiert auf dem von C geerbten Dingen
  also printf, getch, stdout, stdin, fflush, ...

die andere ist die modernere und mehr C++ - like:
  Streams cout und cin mit den zugehoerigen Operator
  Ueberladungen << und >> sowie einigen Zusatzfunktionen
  die als Memberfunktionen der streams ausgefuehrt sind.


Ein Mischen der beiden Methoden ist ein absolut sicherer
Weg sich selbst in den Wahnsinn zu treiben, da in C++ nicht
definiert ist ob und wie die beiden Methoden zusammenhaengen
bzw. ueberhaupt irgendetwas miteinander zu tun haben.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.