Главная->Інформатика та програмування->Содержание->Вывод на печатающее устройство

ОБЪЕКТНО-ОРИЕНТИРОВАННОЕ ПРОГРАММИРОВАНИЕ В C++ (4-Е ИЗДАНИЕ) (часть 12) онлайн

Вывод на печатающее устройство

Не составляет никаких проблем использовать консольные программы для того, чтобы посылать данные на принтер. Операционная система создает ряд специ- альных имен файлов, которые обозначают различные устройства. Тем самым делается возможной работа с устройствами как с файлами. Таблица 12.11 содер- жит все зарезервированные под устройства имена файлов.

Таблица 12.11. Имена устройств

Имя

Устройство

con

Консоль (клавиатура и монитор)

aux или com1

Первый последовательный порт

com2

Второй последовательный порт

prn или lpt1

Первый параллельный порт

lpt2

Второй параллельный порт

lpt3

Третий параллельный порт

nul

Фиктивное (несуществующее) устройство

В большинстве систем принтер подключен к первому параллельному порту, поэтому имя принтера — prn или lpt1 (понятно, что в случае, если ваша система настроена иначе, надо использовать другое имя).

Следующая программа посылает строку и число на принтер, используя фор- матированный вывод (оператор вставки).

Листинг 12.23. Программа EZPRINT

// ezprint.cpp

// Простой вывод на принтер

#include <fstream>             // Для файловых потоков

using namespace std;

 

int main()

{

  char* s1 = "\nСегодня ваше счастливое число -- ";

  int  n1 = 17982;

 

  ofstream outfile;            // создать выходной файл

  outfile.open("PRN");         // открыть принтеру доступ к нему

  outfile << s1 << n1 << endl; // послать данные на принтер

  outfile << '\x0C';           // прогнать лист до конца

  return 0;

}

 

Таким способом на принтер можно послать сколько угодно строк. Служеб- ный символ '\ x0C ' осуществляет прогон страницы.

Следующая программа распечатает для вас содержимое дискового файла на принтере. В ней используется посимвольный подход к передаче данных.

Листинг 12.24. Программа OPRINT

// oprint.cpp // имитация команды print

Листинг 12.24 (продолжение)

#include <fstream>        // для файловых функций

#include <iostream>

using namespace std;

#include <process.h>      // для exit()

int main(int argc, char* argv[] )

{

  if(argc != 2)

    {

    cerr << "\nФормат команды: oprint имя_файла\n";

    exit(-1);

    }

  char ch;                // символ для считывания

  ifstream infile;        // создать входной файл

  infile.open( argv[1] ); // открыть файл

  if( !infile )           // проверить на наличие ошибок

    {

    cerr << "\nНевозможно открыть " << argv[1] << endl;

    exit(-1);

    }

  ofstream outfile;       // Создать файл

  outfile.open("PRN");    // открыть доступ принтера к нему

  while( infile.get(ch) != 0 ) //считать символ

    outfile.put(ch);           // отправить символ на печать

  outfile.put('\x0C');         // прогон страницы

  return 0;

}

 

Эта программа может быть использована для печати любых текстовых фай- лов, например исходных текстов программ .cpp. Она очень похожа на команду print из операционной системы MS DOS. Как и предыдущие, программа прове- ряет корректность количества аргументов и правильность открытия файла.

 

45