Druckaufforderung auf Konsole



  • Gibt es sowas wie eine Druckaufforderung bei einem Programm auf Konsolenebene??
    Ich stelle mir das folgendermaßen vor:

    Ich habe nach einer Berechnung das Ergebnis ausgegeben! Wenn ich jetzt den Buchstaben "d" eingebe und auf "Enter" drücke, soll der Drucker angesprochen und die Ausgabe ausgedruckt werden!

    Einfaches Beispiel(nicht mein Programm):

    #include <iostream>
    #include <windows.h>
    using namespace std;
    
    int main()
    {
        int a=0, b=0, erg=0;
    	char drucken;
    
        cout<<"Wert fuer a: ";
        cin>>a;
        cout<<"Wert fuer b: ";
        cin>>b;
    
        erg=a+b;
        system("cls");
    
        cout<<"Das Ergebnis lautet: "<<erg<<endl;  //nur diese Zeile soll gedruckt werden!!
    
        cout<<"drucken (d)";
        cin>>drucken;
        if(drucken=='d')cout<<"Platzhalter"; //hier der Druckbefehl
    
        return 0;
    }
    

    Ist sowas möglich? Wenn ja, weiß jemand wie das geht??

    maddin



  • if(drucken=='d'){
    Drucken();
    }
    

    meinst du das?

    //edit wenn du den druckbefehl an sich meinst, dann musst du in ein anderes forum(winapi oder ähnliches). drucken kann standard c++ nicht



  • #include <iostream> 
    #include <fstream> 
    
    int main () 
    { 
        std::ifstream Datei ( "Datei.dat" ); 
        std::ofstream Drucker ( "LPT1" ); 
    
        if ( Datei == 0 || Drucker == 0 ) 
        { 
            std::cerr << "Datei und\\oder Drucker konnten nicht geöffnet werden"; 
        } 
        else 
        { 
            while ( Datei.eof() != true ) 
            { 
                Drucker.put ( Datei.get() ); 
            } 
    
            Drucker.put ( '\f' ); 
            Drucker.close (); 
            Datei.close (); 
        } 
    
        return (0); 
    }
    

    Geht alles wenn man nur will ➡ FAQ hilft.



  • @ nix da

    In den FAQ's kenne ich mich hier leider nicht so aus, ich wüßte auch gar nicht, wo ich suchen sollte! Würde mich als Programmierer-Neuling bezeichnen 😞

    Deswegen habe ich noch Fragen und ich hoffe, die kann jemand beantworten! Es betrifft diese Zeilen:

    std::ifstream Datei ( "Datei.dat" ); 
    std::ofstream Drucker ( "LPT1" );
    

    1. Gehe ich richtig in der Annahme, dass hier der Inhalt der "Datei.dat" gedruckt werden soll?? Also direkt meine Konsolenebenen-Ausgabe kann ich nicht ausdrucken?? Oder wird die Ausgabe mit "Datei.dat" angesprochen?? Wie gesagt, ich kenne mich hier nicht so aus!

    2. Mit "LPT1" wird wohl der Druckeranschluss angesprochen! Mein Drucker läuft aber über USB! Wie funktioniert das dann?

    maddin



  • 1. Türlich geht das.
    2. Pech.



  • Hallo,
    ich muss auch meine Ausgabe ausdrucken lassen und bin auf diesen Thread gestoßen! Ich habe aber noch eine Frage zu dem geposteten Lösungsvorschlag: Was steht denn in der "Datei.dat"?? Diese wird ja hier nur ausgelesen...
    Heißt das, dass ich vorher meine komplette Ausgabe in diese Datei schreiben muss?? Falls ja, könnte mir vielleicht jemand ein Beispiel posten, wie ich die Ausgabe in diese Datei reinschreibe??
    Hoffentlich kennt sich damit noch jemand aus....

    MfG
    clemens



  • Datei.DAT ist deine Datei jenachdem unter was du abspeicherst musst du das natürlich umändern 🙂



  • Drucker.put ( Datei.get() );
    

    Hier wird in dem obigen Beispiel ein Zeichen gedruckt. In diesem Beispiel kommt das Zeichen

    Datei.get()
    

    aus der Eingabedatei. Du kannst es natürlich Deinen Anforderungen entsprechend irgendwoanders hernehmen.


  • Mod

    if ( Datei == 0 || Drucker == 0 )
        {
            std::cerr << "Datei und\\oder Drucker konnten nicht geöffnet werden";
        }
        else
        {
            while ( Datei.eof() != true )
            {
                Drucker.put ( Datei.get() );
            }
     
            Drucker.put ( '\f' );
            Drucker.close ();
            Datei.close ();
        }
    

    Bitte verschone uns mit sowas.

    std::ifstream Datei ( "Datei.dat" );
    	std::ofstream Drucker ( "LPT1" );
    
    	if ( !Datei.is_open() || !Drucker.is_open() )
    		std::cerr << "Datei und\\oder Drucker konnten nicht geöffnet werden";
    	else
    		std::copy( std::istreambuf_iterator<char>{Datei}, std::istreambuf_iterator<char>{}, std::ostreambuf_iterator<char>{Drucker} );
    		// Braucht <iterator> und <algorithm>
    

    (ungetestet)

    Edit: Da mussten mehr Header hin als ich dachte.


Anmelden zum Antworten