Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (WinAPI, Konsole) » Ausgabe der Konsole einlesen?

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 < [ 2 ]
000
13.01.2007, 20:23 Uhr
~Xenon
Gast


Also ich habe folgendes Problem :

Ich versuche wenn ich meinetwegens mittels system("dir") die Ausgabe der
Konsole in einen Array oder String zu schreiben gibt es dazu spezielle
Funktionen oder Codeschnipsel?

wäre für Hilfe dankbar

mfg Xenon
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
13.01.2007, 20:44 Uhr
~Xenon
Gast


Also wie kriege ich die system() Ausgabe in einen Char Array oder String?
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
13.01.2007, 21:00 Uhr
Kest
saint


Hi!

Man kann die Ausgabe in eine Datei umleiten (z.B. system("dir>dateiname.txt")) und dann aus der Datei lesen (oder lesen und einem Array abspeichern). Man verbraucht dann logischerweise auch weniger Speicherplatz.
--
Wenn man einen Hufschlag hört, sollte man >Pferd< denken und nicht >Zebra<.

Dieser Post wurde am 13.01.2007 um 21:01 Uhr von Kest editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
13.01.2007, 22:36 Uhr
~Xenon
Gast


Cool vielen Dank,

bezieht sich das auf alle Befehle oder nur bestimmte?

switch(lol)
case 1: wenn auf alle dann Danke.
case 2: wenn nicht dann gibt es noch eine andere Möglichkeit?
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
13.01.2007, 22:43 Uhr
FloSoft
Medialer Over-Flow
(Administrator)


Hi,
normal mach man sowas mit Pipes, schau dir mal für sowas popen an ;-)
--
class God : public ChuckNorris { };
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
14.01.2007, 00:25 Uhr
Kest
saint


Also, es gibt standardmäßig zwei sog. FILE-Zeiger (oder Ausgabe-Streams für C++, in C++ dann drei) und nämlich 'stdout' und 'stderr'. 'stdout' dient für Standardausgabe, 'stderr' für Standardfehlerausgabe. Die Standardausgabe kann man immer umleiten, Standardfehlerausgabe gar nicht.
in C++:
cout = stdout
cerr = stderr
und auch noch clog, das sich auf das gleiche Ausgabeziel bezieht, halt, nur gepuffert.

Alle Batch-Befehle gehen durch die Standardausgabe, deswegen kann man sie eingentlich immer umleiten.
--
Wenn man einen Hufschlag hört, sollte man >Pferd< denken und nicht >Zebra<.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
14.01.2007, 08:54 Uhr
FloSoft
Medialer Over-Flow
(Administrator)


Auch stderr lässt sich umleiten, warum denn auch nicht? stderr ist nur normalerweise ungepuffert, stdout normalerweise schon.
--
class God : public ChuckNorris { };
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
007
14.01.2007, 11:52 Uhr
~Xenon
Gast


Cool also kann ich :


C++:
#include <iostream>
#include <fstream>

int main(){
fstream out;
out.open("Konsole.ausgabe",ios::out);

out = stdout;
system("dir");
}

machen?

 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
008
14.01.2007, 12:43 Uhr
Suba Esel



funktioniert bei mir nicht:
fstream und ios brauchen std::, und out = stdout muss out << stdout sein
außerdem steht in der Konsole.ausgabe immer nur eine Hex - Zahl
--
Simon
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
009
14.01.2007, 12:51 Uhr
FloSoft
Medialer Over-Flow
(Administrator)


da "system" eine neue shell startet, kannste damit keine ausgabe umleiten. darum: popen!

z.B (Beispiel aus der MSDN):

C++:

   char   psBuffer[128];
   FILE   *pPipe;

        /* Run DIR so that it writes its output to a pipe. Open this
         * pipe with read text attribute so that we can read it
         * like a text file.
         */


   if( (pPipe = popen( "dir *.c /on /p", "rt" )) == NULL )
      exit( 1 );

   /* Read pipe until end of file, or an error occurs. */

   while(fgets(psBuffer, 128, pPipe))
   {
      printf(psBuffer);
   }


   /* Close pipe and print return value of pPipe. */
   if (feof( pPipe))
   {
     printf( "\nProcess returned %d\n", _pclose( pPipe ) );
   }
   else
   {
     printf( "Error: Failed to read the pipe to the end.\n");
   }


--
class God : public ChuckNorris { };
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 < [ 2 ]     [ C / C++ (WinAPI, Konsole) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: