[C++] Visual Studio -> Wo ist der Standard-Output?

  • Ersteller Ersteller Green Mamba
  • Erstellt am Erstellt am
G

Green Mamba

Gast
Hallo,

ich benutze seit neustem Visual Studio.NET, habe aber aktuell das Problem, dass Strings die ich mit printf ausgebe nirgends erscheinen. :(
Zum testen habe ich gleich als erste Zeile in der Main ein printf reingeknallt. Kommt aber nirgends. Ach ja, es handelt sich um eine QT-Anwendung, es geht also keine Commandline oder sowas auf.
Gibts da einen Trick, oder wo kann ich die Standard-Outputs lesen?

Vielen Dank schonmal,
Green Mamba
 
Also ich weiß nicht ob es folgenden Weg nur unter dx ( ich habe das ganze aus einem Buch über Spieleprogrammierung mit dx und C++ ) gibt oder allgemein beim VC++ aber ich habe mich dazu entschlossen in mal zu posten:

Zunächst müssen folgende Bibliotheken includet werden: io.h, fcnt1.h, iostream.h.

Dann steht in meinem Buch folgender Code:
Code:
void open_console()
{
  int fh;
  
  AllocConsole();
  SetConsoleTitle("Meine Konsole");
  
  fh=open("CON", _O_WRONLY);
  *stdout=*fopen(fh, "w");
  setvbuf(stdout,NULL, _IONBF,0);

  fh=open("CON", _O_RDONLY);
  *stdin=*fdopen(fh, "r");
  setvbuf(stdin,NULL,_IONBF,0);

  fh=open("CON, _O_WRONLY);
  *stderr=*fdopen(fh,"w");
  setvbuf(stderr,NULL, _IONBF,0);

  cout.sync_with_stdio();
  cin.sync_with_stdio();
  cerr.sync_with_stdio();
}

void close_console()
{
  FreeConsole();
}

Nach dem Aufruf von open_console() sollte man dann printf, scanf, cin und cout benutzen können.

Ich hoffe das hilft dir weiter ;)
 
Hi,

danke schonmal für die Antwort. Leider kennt der Compiler trotz includeter Header die Funktionen nicht.

Code:
d:\Projekte\UltimateVolumeEditor\Ultimate Volume Editor\main.cpp(31): error C3861: 'AllocConsole': identifier not found, even with argument-dependent lookup
d:\Projekte\UltimateVolumeEditor\Ultimate Volume Editor\main.cpp(32): error C3861: 'SetConsoleTitle': identifier not found, even with argument-dependent lookup
d:\Projekte\UltimateVolumeEditor\Ultimate Volume Editor\main.cpp(35): error C2664: 'fopen' : cannot convert parameter 1 from 'int' to 'const char *'
d:\Projekte\UltimateVolumeEditor\Ultimate Volume Editor\main.cpp(42): error C2001: newline in constant
d:\Projekte\UltimateVolumeEditor\Ultimate Volume Editor\main.cpp(43): error C2296: '*' : illegal, left operand has type 'const char [17]'
d:\Projekte\UltimateVolumeEditor\Ultimate Volume Editor\main.cpp(43): error C2297: '*' : illegal, right operand has type 'FILE *'
d:\Projekte\UltimateVolumeEditor\Ultimate Volume Editor\main.cpp(43): error C2143: syntax error : missing ')' before ';'
d:\Projekte\UltimateVolumeEditor\Ultimate Volume Editor\main.cpp(43): error C2660: 'open' : function does not take 1 arguments
d:\Projekte\UltimateVolumeEditor\Ultimate Volume Editor\main.cpp(46): error C2065: 'cout' : undeclared identifier
d:\Projekte\UltimateVolumeEditor\Ultimate Volume Editor\main.cpp(46): error C2228: left of '.sync_with_stdio' must have class/struct/union type
d:\Projekte\UltimateVolumeEditor\Ultimate Volume Editor\main.cpp(47): error C2065: 'cin' : undeclared identifier
d:\Projekte\UltimateVolumeEditor\Ultimate Volume Editor\main.cpp(47): error C2228: left of '.sync_with_stdio' must have class/struct/union type
d:\Projekte\UltimateVolumeEditor\Ultimate Volume Editor\main.cpp(48): error C2065: 'cerr' : undeclared identifier
d:\Projekte\UltimateVolumeEditor\Ultimate Volume Editor\main.cpp(48): error C2228: left of '.sync_with_stdio' must have class/struct/union type

Visual C++ hat auch immer so ein kleines Fensterchen beinhaltet, wo solche Ausgaben gelandet sind. Allerdings gibts das bei VS .NET wohl nicht mehr!? :confused_alt:
 
.net zeigt die im selben fenster an wie die Compiler ausgaben. allerdings wohl nur wenn das programm debuggst. Allerdings lässt sich die ausgabe von qdebug ganz einfach mit http://doc.trolltech.com/3.3/qapplication.html#qInstallMsgHandler in ein eigenes fenster umleiten. du kannst sogar den alten msghanlder selbst aufrufen dann schreibt er den kram auch weiter in stderror.
 
Zuletzt bearbeitet:
Komisch, ich lass das Teil während der Entwicklung ja grundsätzlich im Debug-Modus laufen. :rolleyes:
Bei mir gibts dort 2 Fenster, einmal "Build", und einmal "Debug" (also unter Output). Im Debug-Fenster steht eine Liste mit DLL´s die geladen wurden, aber keine Symbole beinhalten, und im Build-Fenster stehen evtl. Compilerfehler und am Ende eben eine Bestätigung über das Build.
Komischerweise erscheint dort mein Text nicht. Obwohl das die erste Zeile in der Main ist. :(
 
leider kann ich gerade .net nich starten da in der vm kde compiliert(multitasking hat windows irgendwie immernoch nicht richtig drauf....). allerdings bin ich mir fast sicher das build und debug output das selbe fenster sind. welche version nutzt du denn? 2002, 2003, 2005?
 
Ich benutze Version 2003. Debug und Build sind beide im Output-Fenster. Ich kann sie in der Kopfzeile von Output-Fenster auswählen. Allerdings erscheinen in keinem der beiden meine Testausgaben.
 
oh das hab ich ja ganz übersehen: warum nutzt du den printf für die ausgabe? qt bietet doch dafür extra qDebug etc.

soweit ich weiß gibt .net nicht die standardausgabe aus sondern die standard error ausgabe. ich allerdings keine ahnung wie man mit c da rein schreibt. eventuel könntest du dein programm als tool einrichten und es dann über das menü starten, da wird soweit ich weiß immer die normale dos ausgabe benutzt.
 
Kein Plan wie sowas geht. Ich denke ich werde mir in die GUI ein eigenes Debug-Fenster einbauen.
Aber danke trotzdem für deine Hilfe! :)
 
Zurück
Oben