[C++] Print functie

Pagina: 1
Acties:

  • Xof
  • Registratie: Juni 2001
  • Laatst online: 24-08 22:06
De zoek functie doet het niet dus ik heb de search niet gebruikt :P
* Xof is bezig C++ aan het leren en nu ben ik bij een gedeelte waar je de uitvoer naar de printer moet sturen, maar er gebeurd niks.
Ik tik de volgende code in:
#include <iostream.h>
#include <iomanip.h>
#include <fstream.h>

void main() {
ofstream prout( "PRN" );
char ch;
for( ch = 'a'; ch <= 'z'; ch++ ) prout << setw( 2 ) << ch;
prout << '\f';
}
Ligt het aan de printer of moet de code anders :?

ps. Ik maak gebruik van de quote, want de code tag zet alle < tekens om :?

  • Zoijar
  • Registratie: September 2001
  • Niet online

Zoijar

Because he doesn't row...

Een aantal opmerkingen (omdat je C++ aan het leren bent wel op z'n plaats denk ik)

- void main() is niet juist, gebruik int main() en een return.

- C++ std headers hebben geen .h extensie, dus al je includes moeten van de vorm #include <iostream> worden

- Verder moet je dan ipv ofstream, std::ofstream gebruiken. (of, wat eingelijk niet helemaal goed is, maar aangezien het het leren makkelijker maakt, "using namespace std;" voor main() zetten)

Het resultaat is dan het volgende, bij mij werkt het goed:
#include <iostream>
#include <iomanip>
#include <fstream>

int main() {
std::ofstream prout("PRN");
char ch;

for (ch = 'a'; ch <= 'z'; ch++) {
prout << std::setw(2) << ch;
}
prout << '\f';

return 0;
}

[ Voor 0% gewijzigd door Zoijar op 01-08-2002 15:32 . Reden: code tags werken idd niet goed ]


  • Xof
  • Registratie: Juni 2001
  • Laatst online: 24-08 22:06
Bedankt voor de reactie :)
In het boek wordt wel de .h extensie gebruikt en word er void main() gebruikt, maar het werkt idd ook zoals jij het zegt :)

Alleen hij print nog niet, dan zal het wel aan mijn printer liggen (HP deskjet 916C, usb)
De 'cursor' blijft gewoon knipperen.

Verwijderd

En je printerlampje blijft knipperen omdat je je stream niet flushed, maw. de laatste karakter(s) worden niet naar de printer geschreven. Je kunt flushen door als laatste een flush aan te hangen:
prout << '\f' << std::flush;

  • Xof
  • Registratie: Juni 2001
  • Laatst online: 24-08 22:06
Nou nee het is niet de printerlampje die knippert maar dat streepje/cursor (kan niet meer op de goede benaming komen :o) in de dosconsole.
Als ik hem laat 'flushen' gebeurd er nog niks.
Ik zie ook geen printer icoon verschijnen op de taskbar.

  • Zoijar
  • Registratie: September 2001
  • Niet online

Zoijar

Because he doesn't row...

Een basic output stream flushed zichzelf trouwens standaard volgens mij. Daarvoor wordt er steeds een basic_ostream<>::sentry object gemaakt.

  • MSalters
  • Registratie: Juni 2001
  • Laatst online: 21-08 17:14
"PRN:" ?

Man hopes. Genius creates. Ralph Waldo Emerson
Never worry about theory as long as the machinery does what it's supposed to do. R. A. Heinlein


  • Xof
  • Registratie: Juni 2001
  • Laatst online: 24-08 22:06
* Xof vraagt zich af of het niet aan de PRN functie ligt, als ik nml bijv. stdprn invul dan zie je het beeld heel snel en verdwijnt het weer, dus is hij klaar met de uitvoer, maar met PRN doet hij dus niks dus kan de printer niet gevonden worden?
De code zelf is volgens mij wel goed :)

  • Zoijar
  • Registratie: September 2001
  • Niet online

Zoijar

Because he doesn't row...

Bij mij print ie netjes het alfabet... (met ph?)

  • Xof
  • Registratie: Juni 2001
  • Laatst online: 24-08 22:06
Het ligt dus aan mijn printer :?
Raar want vaak met andere dos programma's kan ik wel gewoon printen, ik weet niet wat zij voor een code gebruiken.
Nouja pech gehad het word gelukkig ook niet echt lang behandeld :)
Pagina: 1