The Modern C++ Challenge 第9章 の続きです。
今回は第10章に挑戦します。
まずは目次を読む。
第10章 アーカイブ、画像、およびデータベース
79 ZIP アーカイブ内のファイルの検索
80 ZIP アーカイブへの/からのファイルの圧縮および解凍
81 パスワード付きのZIPアーカイブへの/からのファイルの圧縮および解凍
82 国旗を表す PNG の作成
83 検証テキスト PNG 画像の作成
84 EAN-13 バーコードジェネレーター
85 SQLite データベースからの映画情報の読み込み
86 トランザクショナルに SQLite データベースに映画情報を挿入する
87 SQLite データベースでの映画情報の画像の処理
問題文を読む。
問79 ZIP アーカイブ内のファイルの検索
ユーザーが指定した正規表現に名前が一致する ZIP アーカイブ内のすべてのファイルを検索して出力できるプログラムを作成します。
たとえば、^.*.jpg$ を使用して、拡張子が .jpg のすべてのファイルを検索します。
ソースコードを斜め読みして実行する。
この章は外部ライブラリを使っていて、
すんなり実行できなかった。
問79 問80 問81 にて ZipLib ライブラリを使っている。
ビルドして共有ライブラリ(libZipLib.a) を作成する。
問73 問82 問83 82 問84 にて pngwriter ライブラリを使っている。
pngwriter.c pngwriter.h をコピーしてビルドする。
一通り実行できたので、
Modern C++ に着目して、ソースコードを読んでみる。
問79 問80 にて std::filesystem を使っている。
問82 国旗を表す PNG の作成
ルーマニアの国旗を作成する
このプログラムでは、
左から赤黄青の3色旗が生成される
正しくは青黄赤のはず。
第10章 のソースコードを Github に公開した。
https://github.com/ohwada/The-Modern-Cpp-Challenge/tree/main/The-Modern-Cpp-Challenge/Chapter10