2014年5月7日水曜日

開発環境

C++実践プログラミング (スティーブ オウアルライン (著)、Steve Oualline (原著)、Steve Oualline(原著)、望月 康司(翻訳)、クイープ(翻訳) 、オライリー・ジャパン)のⅤ部(言語のその他の機能)の23章(モジュールプログラミング)、23.11(プログラミング実習)、実習 23-1.を解いてみる。

その他参考書籍

実習 23-1.

コード(BBEdit, Emacs)

print_pages.h

#include <fstream>

class print_fp {
  std::ofstream out_file;
public:
  print_fp () {}
  void open_file(char *name);
  void define_header(char *heading);
  void print_line(char *line);
  void page();
  void close_file();
};

print_pages.cpp

#include <iostream>
#include <fstream>
#include <cstdlib>

#include "print_pages.h"

void print_fp::open_file(char *name)
{
  out_file.open(name);
  if (out_file.fail()) {
    std::cerr << "Error: Could not open " << name << std::endl;
    exit (8);
  }
}

void print_fp::define_header(char *heading)
{
  out_file << heading << "--------------------" << std::endl;
}

void print_fp::print_line(char *line)
{
  out_file << line << std::endl;
}

void print_fp::page()
{
  out_file << '\f';
}

void print_fp::close_file()
{
  out_file.close();
}

test_print_pages.cpp

#include "print_pages.h"

int main(int argc, char *argv[])
{
  print_fp p;
  char heading[] = "見出し";
  char line1[] = "1行目";
  char line2[] = "2行目";
  char f[] = "改ページ";
  p.open_file(argv[1]);
  p.define_header(heading);
  p.print_line(line1);
  p.print_line(line2);
  p.print_line(f);
  p.page();
  p.print_line(line1);
  p.close_file();

  return (0);
}

Makefile

CC=g++
CFLAGS=-g -Wall
SRC=print_pages.cpp test_print_pages.cpp
OBJ=print_pages.o test_print_pages.o

all: test_print_pages

test_print_pages: $(OBJ)
 ${CC} ${CFLAGS} -o test_print_pages $(OBJ)

test_print_pages.o: print_pages.h test_print_pages.cpp
 ${CC} $(CFLAGS) -c test_print_pages.cpp

print_pages.o: print_pages.h print_pages.cpp
 ${CC} $(CFLAGS) -c print_pages.cpp

clean:
 rm test_print_pages test_print_pages.o print_pages.o

入出力結果(Terminal)

$ make
g++ -g -Wall -c print_pages.cpp
g++ -g -Wall -c test_print_pages.cpp
g++ -g -Wall -o test_print_pages print_pages.o test_print_pages.o
$ ./test_print_pages pages.out
$ cat pages.out 
見出し--------------------
1行目
2行目
改ページ

1行目
$

0 コメント:

コメントを投稿