Ausgabe von externem Programm einlesen



  • Hallo zusammen,
    als Anfänger brauche ich noch eure Hilfe. Das Programm digitemp liefert die Temperatur in Form von 21.23 an den Bildschirm. Diese Ausgabe möchte ich einlesen. Mit cin klappt das nicht.

    class temperatur
    {
    	int temp;
    
    	public:
    	temperatur() : temp(0)
    	{
    	}
    
    	double vorlauf()
    	{
    		system("digitemp -t0");
    		std::cin >> temp;
    		return temp;		
    	}	
    };
    

    Wie klappt das Einlesen des Streams?
    Danke
    Bernd



  • 'cin' liest ja nur (standardmäßig) von der Konsoleneingabe (das Stichwort was du suchst heißt "Pipes", d.h. die Weiter bzw. Umlenkung der Ausgabe als Eingabe).

    Am einfachsten wäre dann das Umlenken in eine Datei und anschließendem Lesen aus der Datei (so wie du es in dem andeen Thread ja auch schon gefragt hattest).

    Mittels "system("digitemp >datei.txt -t0");" kannst du die Ausgabe in die Datei "datei.txt" (den Namen kannst du natürlich frei wählen) umlenken.
    Und anschließend dann mittels

    std::ifstream iff("datei.txt");
    iff >> temp;
    

    auslesen.

    P.S. Wenn du auch Kommazahlen einlesen willst (z.B. 20.15), dann nimm als Datentyp 'float' oder 'double'.



  • Hallo Th69,
    danke, so mache ich es. Ich lasse digitemp die Temperatur in eine Datei schreiben und lesen diese dann aus.
    Gruß Bernd



  • Th69 schrieb:

    Mittels "system("digitemp >datei.txt -t0");" kannst du die Ausgabe in die Datei "datei.txt" (den Namen kannst du natürlich frei wählen) umlenken.

    Falls Portabilität wichtig ist, kann man das Gleiche auch mit Standard-C++ erreichen, indem man die internen Puffer über rdbuf() umhängt. Mehr dazu...



  • Nexus schrieb:

    Th69 schrieb:

    Mittels "system("digitemp >datei.txt -t0");" kannst du die Ausgabe in die Datei "datei.txt" (den Namen kannst du natürlich frei wählen) umlenken.

    Falls Portabilität wichtig ist, kann man das Gleiche auch mit Standard-C++ erreichen, indem man die internen Puffer über rdbuf() umhängt. Mehr dazu...

    von fremden prozessen? Oo

    bb


Anmelden zum Antworten