Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » standartausgabe umleiten?

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 <
000
24.08.2004, 12:31 Uhr
Tacco



Hallo,
ich habe ein Konsolenprogramm (das ich nicht ändern kann) und schreibe ne Gafischeoberfläche dazu. Nun muss ich die standartausgabe von CMD umleiten.
Aber wie??

Dazu habe ich auch schon in Forum gesucht und einiges gefunden aber nicht ferstanden!

Der meist gebrachte forschlag ist die ausgabe in eine datei umzu leite und wieder auszulesen. Das ist aber beimir nicht pragtisch. Funktionirt das nicht auch anders??

Danke für die Hilfe!!

MFG Tacco
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
24.08.2004, 14:15 Uhr
virtual
Sexiest Bit alive
(Operator)


Windows, gelle?

Dann kannst Du _popen, resp. _pclose verwenden.
Folgende Code sollte sowohl unter Windows alsauch unter Betriebssytemen funktionieren.
Ist nur schnell getippt, keine Garantie:


C++:
#include <cstdio>
#include <string>
#include <sstream>
#include <iostream>
#include <stdexcept>

#ifndef __unix__
#    define popen _popen
#    define pclose _pclose
#endif


std::string getCommandOutput(const std::string& command)
{
    FILE* output = popen(command.c_str(), "r");
    if (output!=NULL)
    {
        std::stringstream sstr;
        char buffer[1024];
        size_t len;

        while ((len=fread(buffer, 1, sizeof(buffer), output))>0)
        {
            sstr.write(buffer, len);
        }

        pclose(output);
        return sstr.str();
    }else
    {
        throw std::runtime_error("Failed to execute \""+command+"\"");
    }
}


int main(int argc, char* argv[])
{
    try
    {
        std::string command = "dir \\";
        std::string output = getCommandOutput(command);
        std::cout<<output<<std::endl;
    }
    catch(std::exception& e)
    {
        std::cerr<<"ERROR: "<<e.what()<<std::endl;
    }
    return 0;
}


--
Gruß, virtual
Quote of the Month
Ich eß' nur was ein Gesicht hat (Creme 21)
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
24.08.2004, 15:24 Uhr
Tacco



Hallo,
naja auf der konsole funktionirt das aber da ich ja eine windows oberfläche habe kommt nur die ERROR ausschrift. popen(command.c_str(), "r"); gibt NULL zurüg.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (ANSI-Standard) ]  


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: