Boostを導入してみる。
まずは、boost::formatから。
The Boost Format library - boostjp
C言語のprintfのような書式指定が出来る。
やる前に、まずはboostのインストール。
$ sudo yum install boost メタデータの期限切れの最終確認: x:xx:xx 時間前の xxxx年xx月xx日 xx時xx分xx秒 に実施しました。 依存関係が解決しました。 ================================================================================ パッケージ アーキテクチャー バージョン リポジトリ サイズ ================================================================================ インストール: boost x86_64 1.66.0-14.fc29 fedora 15 k 依存関係をインストール中: boost-atomic x86_64 1.66.0-14.fc29 fedora 17 k boost-container x86_64 1.66.0-14.fc29 fedora 47 k boost-context x86_64 1.66.0-14.fc29 fedora 19 k boost-coroutine x86_64 1.66.0-14.fc29 fedora 35 k boost-fiber x86_64 1.66.0-14.fc29 fedora 130 k boost-graph x86_64 1.66.0-14.fc29 fedora 117 k boost-log x86_64 1.66.0-14.fc29 fedora 453 k boost-math x86_64 1.66.0-14.fc29 fedora 269 k boost-program-options x86_64 1.66.0-14.fc29 fedora 145 k boost-random x86_64 1.66.0-14.fc29 fedora 26 k boost-serialization x86_64 1.66.0-14.fc29 fedora 128 k boost-signals x86_64 1.66.0-14.fc29 fedora 43 k boost-stacktrace x86_64 1.66.0-14.fc29 fedora 40 k boost-test x86_64 1.66.0-14.fc29 fedora 255 k boost-timer x86_64 1.66.0-14.fc29 fedora 24 k boost-type_erasure x86_64 1.66.0-14.fc29 fedora 34 k boost-wave x86_64 1.66.0-14.fc29 fedora 195 k トランザクションの概要 ================================================================================ インストール 18 パッケージ ダウンロードサイズの合計: 1.9 M インストール済みのサイズ: 7.5 M これでよろしいですか? [y/N]: y パッケージのダウンロード中です: (1/18): boost-1.66.0-14.fc29.x86_64.rpm 7.3 kB/s | 15 kB 00:02 (2/18): boost-atomic-1.66.0-14.fc29.x86_64.rpm 7.3 kB/s | 17 kB 00:02 (3/18): boost-container-1.66.0-14.fc29.x86_64.r 19 kB/s | 47 kB 00:02 (4/18): boost-context-1.66.0-14.fc29.x86_64.rpm 15 kB/s | 19 kB 00:01 (5/18): boost-coroutine-1.66.0-14.fc29.x86_64.r 24 kB/s | 35 kB 00:01 (6/18): boost-fiber-1.66.0-14.fc29.x86_64.rpm 87 kB/s | 130 kB 00:01 (7/18): boost-graph-1.66.0-14.fc29.x86_64.rpm 79 kB/s | 117 kB 00:01 (8/18): boost-math-1.66.0-14.fc29.x86_64.rpm 198 kB/s | 269 kB 00:01 (9/18): boost-log-1.66.0-14.fc29.x86_64.rpm 226 kB/s | 453 kB 00:02 (10/18): boost-program-options-1.66.0-14.fc29.x 102 kB/s | 145 kB 00:01 (11/18): boost-random-1.66.0-14.fc29.x86_64.rpm 16 kB/s | 26 kB 00:01 (12/18): boost-serialization-1.66.0-14.fc29.x86 90 kB/s | 128 kB 00:01 (13/18): boost-signals-1.66.0-14.fc29.x86_64.rp 29 kB/s | 43 kB 00:01 (14/18): boost-stacktrace-1.66.0-14.fc29.x86_64 42 kB/s | 40 kB 00:00 (15/18): boost-test-1.66.0-14.fc29.x86_64.rpm 142 kB/s | 255 kB 00:01 (16/18): boost-timer-1.66.0-14.fc29.x86_64.rpm 18 kB/s | 24 kB 00:01 (17/18): boost-type_erasure-1.66.0-14.fc29.x86_ 25 kB/s | 34 kB 00:01 (18/18): boost-wave-1.66.0-14.fc29.x86_64.rpm 123 kB/s | 195 kB 00:01 -------------------------------------------------------------------------------- 合計 172 kB/s | 1.9 MB 00:11 トランザクションの確認を実行中 トランザクションの確認に成功しました。 トランザクションのテストを実行中 トランザクションのテストに成功しました。 トランザクションを実行中 準備 : 1/1 Installed: boost-context-1.66.0-14.fc29.x86_64 インストール中 : boost-context-1.66.0-14.fc29.x86_64 1/18 Installed: boost-context-1.66.0-14.fc29.x86_64 Installed: boost-timer-1.66.0-14.fc29.x86_64 インストール中 : boost-timer-1.66.0-14.fc29.x86_64 2/18 Installed: boost-timer-1.66.0-14.fc29.x86_64 Installed: boost-atomic-1.66.0-14.fc29.x86_64 インストール中 : boost-atomic-1.66.0-14.fc29.x86_64 3/18 Installed: boost-atomic-1.66.0-14.fc29.x86_64 Installed: boost-log-1.66.0-14.fc29.x86_64 インストール中 : boost-log-1.66.0-14.fc29.x86_64 4/18 Installed: boost-log-1.66.0-14.fc29.x86_64 Installed: boost-test-1.66.0-14.fc29.x86_64 インストール中 : boost-test-1.66.0-14.fc29.x86_64 5/18 Installed: boost-test-1.66.0-14.fc29.x86_64 Installed: boost-coroutine-1.66.0-14.fc29.x86_64 インストール中 : boost-coroutine-1.66.0-14.fc29.x86_64 6/18 Installed: boost-coroutine-1.66.0-14.fc29.x86_64 Installed: boost-fiber-1.66.0-14.fc29.x86_64 インストール中 : boost-fiber-1.66.0-14.fc29.x86_64 7/18 Installed: boost-fiber-1.66.0-14.fc29.x86_64 Installed: boost-wave-1.66.0-14.fc29.x86_64 インストール中 : boost-wave-1.66.0-14.fc29.x86_64 8/18 Installed: boost-wave-1.66.0-14.fc29.x86_64 Installed: boost-type_erasure-1.66.0-14.fc29.x86_64 インストール中 : boost-type_erasure-1.66.0-14.fc29.x86_64 9/18 Installed: boost-type_erasure-1.66.0-14.fc29.x86_64 Installed: boost-stacktrace-1.66.0-14.fc29.x86_64 インストール中 : boost-stacktrace-1.66.0-14.fc29.x86_64 10/18 Installed: boost-stacktrace-1.66.0-14.fc29.x86_64 Installed: boost-signals-1.66.0-14.fc29.x86_64 インストール中 : boost-signals-1.66.0-14.fc29.x86_64 11/18 Installed: boost-signals-1.66.0-14.fc29.x86_64 Installed: boost-serialization-1.66.0-14.fc29.x86_64 インストール中 : boost-serialization-1.66.0-14.fc29.x86_64 12/18 Installed: boost-serialization-1.66.0-14.fc29.x86_64 Installed: boost-random-1.66.0-14.fc29.x86_64 インストール中 : boost-random-1.66.0-14.fc29.x86_64 13/18 Installed: boost-random-1.66.0-14.fc29.x86_64 Installed: boost-program-options-1.66.0-14.fc29.x86_64 インストール中 : boost-program-options-1.66.0-14.fc29.x86_64 14/18 Installed: boost-program-options-1.66.0-14.fc29.x86_64 Installed: boost-math-1.66.0-14.fc29.x86_64 インストール中 : boost-math-1.66.0-14.fc29.x86_64 15/18 Installed: boost-math-1.66.0-14.fc29.x86_64 Installed: boost-graph-1.66.0-14.fc29.x86_64 インストール中 : boost-graph-1.66.0-14.fc29.x86_64 16/18 Installed: boost-graph-1.66.0-14.fc29.x86_64 Installed: boost-container-1.66.0-14.fc29.x86_64 インストール中 : boost-container-1.66.0-14.fc29.x86_64 17/18 Installed: boost-container-1.66.0-14.fc29.x86_64 Installed: boost-1.66.0-14.fc29.x86_64 インストール中 : boost-1.66.0-14.fc29.x86_64 18/18 Installed: boost-1.66.0-14.fc29.x86_64 scriptletの実行中: boost-1.66.0-14.fc29.x86_64 18/18 検証 : boost-1.66.0-14.fc29.x86_64 1/18 検証 : boost-atomic-1.66.0-14.fc29.x86_64 2/18 検証 : boost-container-1.66.0-14.fc29.x86_64 3/18 検証 : boost-context-1.66.0-14.fc29.x86_64 4/18 検証 : boost-coroutine-1.66.0-14.fc29.x86_64 5/18 検証 : boost-fiber-1.66.0-14.fc29.x86_64 6/18 検証 : boost-graph-1.66.0-14.fc29.x86_64 7/18 検証 : boost-log-1.66.0-14.fc29.x86_64 8/18 検証 : boost-math-1.66.0-14.fc29.x86_64 9/18 検証 : boost-program-options-1.66.0-14.fc29.x86_64 10/18 検証 : boost-random-1.66.0-14.fc29.x86_64 11/18 検証 : boost-serialization-1.66.0-14.fc29.x86_64 12/18 検証 : boost-signals-1.66.0-14.fc29.x86_64 13/18 検証 : boost-stacktrace-1.66.0-14.fc29.x86_64 14/18 検証 : boost-test-1.66.0-14.fc29.x86_64 15/18 検証 : boost-timer-1.66.0-14.fc29.x86_64 16/18 検証 : boost-type_erasure-1.66.0-14.fc29.x86_64 17/18 検証 : boost-wave-1.66.0-14.fc29.x86_64 18/18 インストール済み: boost-1.66.0-14.fc29.x86_64 boost-atomic-1.66.0-14.fc29.x86_64 boost-container-1.66.0-14.fc29.x86_64 boost-context-1.66.0-14.fc29.x86_64 boost-coroutine-1.66.0-14.fc29.x86_64 boost-fiber-1.66.0-14.fc29.x86_64 boost-graph-1.66.0-14.fc29.x86_64 boost-log-1.66.0-14.fc29.x86_64 boost-math-1.66.0-14.fc29.x86_64 boost-program-options-1.66.0-14.fc29.x86_64 boost-random-1.66.0-14.fc29.x86_64 boost-serialization-1.66.0-14.fc29.x86_64 boost-signals-1.66.0-14.fc29.x86_64 boost-stacktrace-1.66.0-14.fc29.x86_64 boost-test-1.66.0-14.fc29.x86_64 boost-timer-1.66.0-14.fc29.x86_64 boost-type_erasure-1.66.0-14.fc29.x86_64 boost-wave-1.66.0-14.fc29.x86_64 完了しました! $
boostだけじゃなくて、boost-develも必要だった・・・。
$ sudo yum install boost-devel [sudo] bg1 のパスワード: メタデータの期限切れの最終確認: x:xx:xx 時間前の xxxx年xx月xx日 xx時xx分xx秒 に実施しました。 依存関係が解決しました。 ========================================================================================================================================================= パッケージ アーキテクチャー バージョン リポジトリ サイズ ========================================================================================================================================================= インストール: boost-devel x86_64 1.66.0-14.fc29 fedora 10 M アップグレード: cpp x86_64 8.3.1-2.fc29 updates 10 M gcc x86_64 8.3.1-2.fc29 updates 23 M gcc-c++ x86_64 8.3.1-2.fc29 updates 12 M gcc-gdb-plugin x86_64 8.3.1-2.fc29 updates 139 k libgcc x86_64 8.3.1-2.fc29 updates 100 k libgfortran x86_64 8.3.1-2.fc29 updates 652 k libgomp x86_64 8.3.1-2.fc29 updates 210 k libquadmath x86_64 8.3.1-2.fc29 updates 191 k libstdc++ x86_64 8.3.1-2.fc29 updates 460 k libstdc++-devel x86_64 8.3.1-2.fc29 updates 2.1 M 依存関係をインストール中: libquadmath-devel x86_64 8.3.1-2.fc29 updates 47 k トランザクションの概要 ========================================================================================================================================================= インストール 2 パッケージ アップグレード 10 パッケージ ダウンロードサイズの合計: 59 M これでよろしいですか? [y/N]: y パッケージのダウンロード中です: (1/12): libquadmath-devel-8.3.1-2.fc29.x86_64.rpm 37 kB/s | 47 kB 00:01 (2/12): boost-devel-1.66.0-14.fc29.x86_64.rpm 461 kB/s | 10 MB 00:22 (3/12): cpp-8.3.1-2.fc29.x86_64.rpm 408 kB/s | 10 MB 00:25 (4/12): gcc-gdb-plugin-8.3.1-2.fc29.x86_64.rpm 288 kB/s | 139 kB 00:00 (5/12): libgcc-8.3.1-2.fc29.x86_64.rpm 285 kB/s | 100 kB 00:00 (6/12): libgfortran-8.3.1-2.fc29.x86_64.rpm 427 kB/s | 652 kB 00:01 (7/12): libgomp-8.3.1-2.fc29.x86_64.rpm 288 kB/s | 210 kB 00:00 (8/12): libquadmath-8.3.1-2.fc29.x86_64.rpm 322 kB/s | 191 kB 00:00 (9/12): libstdc++-8.3.1-2.fc29.x86_64.rpm 290 kB/s | 460 kB 00:01 (10/12): libstdc++-devel-8.3.1-2.fc29.x86_64.rpm 323 kB/s | 2.1 MB 00:06 (11/12): gcc-c++-8.3.1-2.fc29.x86_64.rpm 420 kB/s | 12 MB 00:28 (12/12): gcc-8.3.1-2.fc29.x86_64.rpm 434 kB/s | 23 MB 00:54 --------------------------------------------------------------------------------------------------------------------------------------------------------- 合計 1.0 MB/s | 59 MB 00:57 トランザクションの確認を実行中 トランザクションの確認に成功しました。 トランザクションのテストを実行中 トランザクションのテストに成功しました。 トランザクションを実行中 準備 : 1/1 Upgrade: libgcc-8.3.1-2.fc29.x86_64 アップグレード中 : libgcc-8.3.1-2.fc29.x86_64 1/22 scriptletの実行中: libgcc-8.3.1-2.fc29.x86_64 1/22 Upgrade: libgcc-8.3.1-2.fc29.x86_64 Upgrade: libstdc++-8.3.1-2.fc29.x86_64 アップグレード中 : libstdc++-8.3.1-2.fc29.x86_64 2/22 scriptletの実行中: libstdc++-8.3.1-2.fc29.x86_64 2/22 Upgrade: libstdc++-8.3.1-2.fc29.x86_64 Upgrade: libquadmath-8.3.1-2.fc29.x86_64 アップグレード中 : libquadmath-8.3.1-2.fc29.x86_64 3/22 scriptletの実行中: libquadmath-8.3.1-2.fc29.x86_64 3/22 Upgrade: libquadmath-8.3.1-2.fc29.x86_64 Upgrade: libstdc++-devel-8.3.1-2.fc29.x86_64 アップグレード中 : libstdc++-devel-8.3.1-2.fc29.x86_64 4/22 Upgrade: libstdc++-devel-8.3.1-2.fc29.x86_64 Upgrade: libgomp-8.3.1-2.fc29.x86_64 アップグレード中 : libgomp-8.3.1-2.fc29.x86_64 5/22 scriptletの実行中: libgomp-8.3.1-2.fc29.x86_64 5/22 Upgrade: libgomp-8.3.1-2.fc29.x86_64 Upgrade: cpp-8.3.1-2.fc29.x86_64 アップグレード中 : cpp-8.3.1-2.fc29.x86_64 6/22 scriptletの実行中: cpp-8.3.1-2.fc29.x86_64 6/22 Upgrade: cpp-8.3.1-2.fc29.x86_64 Upgrade: gcc-8.3.1-2.fc29.x86_64 アップグレード中 : gcc-8.3.1-2.fc29.x86_64 7/22 scriptletの実行中: gcc-8.3.1-2.fc29.x86_64 7/22 Upgrade: gcc-8.3.1-2.fc29.x86_64 Installed: libquadmath-devel-8.3.1-2.fc29.x86_64 インストール中 : libquadmath-devel-8.3.1-2.fc29.x86_64 8/22 Installed: libquadmath-devel-8.3.1-2.fc29.x86_64 Installed: boost-devel-1.66.0-14.fc29.x86_64 インストール中 : boost-devel-1.66.0-14.fc29.x86_64 9/22 Installed: boost-devel-1.66.0-14.fc29.x86_64 Upgrade: gcc-c++-8.3.1-2.fc29.x86_64 アップグレード中 : gcc-c++-8.3.1-2.fc29.x86_64 10/22 Upgrade: gcc-c++-8.3.1-2.fc29.x86_64 Upgrade: gcc-gdb-plugin-8.3.1-2.fc29.x86_64 アップグレード中 : gcc-gdb-plugin-8.3.1-2.fc29.x86_64 11/22 scriptletの実行中: gcc-gdb-plugin-8.3.1-2.fc29.x86_64 11/22 Upgrade: gcc-gdb-plugin-8.3.1-2.fc29.x86_64 Upgrade: libgfortran-8.3.1-2.fc29.x86_64 アップグレード中 : libgfortran-8.3.1-2.fc29.x86_64 12/22 scriptletの実行中: libgfortran-8.3.1-2.fc29.x86_64 12/22 Upgrade: libgfortran-8.3.1-2.fc29.x86_64 Upgraded: gcc-gdb-plugin-8.2.1-6.fc29.x86_64 整理 : gcc-gdb-plugin-8.2.1-6.fc29.x86_64 13/22 Upgraded: gcc-gdb-plugin-8.2.1-6.fc29.x86_64 scriptletの実行中: gcc-gdb-plugin-8.2.1-6.fc29.x86_64 13/22 Upgraded: libgfortran-8.2.1-2.fc29.x86_64 整理 : libgfortran-8.2.1-2.fc29.x86_64 14/22 Upgraded: libgfortran-8.2.1-2.fc29.x86_64 scriptletの実行中: libgfortran-8.2.1-2.fc29.x86_64 14/22 Upgraded: gcc-c++-8.2.1-6.fc29.x86_64 整理 : gcc-c++-8.2.1-6.fc29.x86_64 15/22 Upgraded: gcc-c++-8.2.1-6.fc29.x86_64 Upgraded: libstdc++-devel-8.2.1-6.fc29.x86_64 整理 : libstdc++-devel-8.2.1-6.fc29.x86_64 16/22 Upgraded: libstdc++-devel-8.2.1-6.fc29.x86_64 Upgraded: gcc-8.2.1-6.fc29.x86_64 scriptletの実行中: gcc-8.2.1-6.fc29.x86_64 17/22 整理 : gcc-8.2.1-6.fc29.x86_64 17/22 Upgraded: gcc-8.2.1-6.fc29.x86_64 Upgraded: libstdc++-8.2.1-6.fc29.x86_64 整理 : libstdc++-8.2.1-6.fc29.x86_64 18/22 Upgraded: libstdc++-8.2.1-6.fc29.x86_64 scriptletの実行中: libstdc++-8.2.1-6.fc29.x86_64 18/22 Upgraded: libgcc-8.2.1-6.fc29.x86_64 整理 : libgcc-8.2.1-6.fc29.x86_64 19/22 Upgraded: libgcc-8.2.1-6.fc29.x86_64 scriptletの実行中: libgcc-8.2.1-6.fc29.x86_64 19/22 Upgraded: cpp-8.2.1-6.fc29.x86_64 scriptletの実行中: cpp-8.2.1-6.fc29.x86_64 20/22 整理 : cpp-8.2.1-6.fc29.x86_64 20/22 Upgraded: cpp-8.2.1-6.fc29.x86_64 Upgraded: libgomp-8.2.1-6.fc29.x86_64 scriptletの実行中: libgomp-8.2.1-6.fc29.x86_64 21/22 整理 : libgomp-8.2.1-6.fc29.x86_64 21/22 Upgraded: libgomp-8.2.1-6.fc29.x86_64 scriptletの実行中: libgomp-8.2.1-6.fc29.x86_64 21/22 Upgraded: libquadmath-8.2.1-2.fc29.x86_64 scriptletの実行中: libquadmath-8.2.1-2.fc29.x86_64 22/22 整理 : libquadmath-8.2.1-2.fc29.x86_64 22/22 Upgraded: libquadmath-8.2.1-2.fc29.x86_64 scriptletの実行中: libquadmath-8.2.1-2.fc29.x86_64 22/22 検証 : libquadmath-devel-8.3.1-2.fc29.x86_64 1/22 検証 : boost-devel-1.66.0-14.fc29.x86_64 2/22 検証 : cpp-8.3.1-2.fc29.x86_64 3/22 検証 : cpp-8.2.1-6.fc29.x86_64 4/22 検証 : gcc-8.3.1-2.fc29.x86_64 5/22 検証 : gcc-8.2.1-6.fc29.x86_64 6/22 検証 : gcc-c++-8.3.1-2.fc29.x86_64 7/22 検証 : gcc-c++-8.2.1-6.fc29.x86_64 8/22 検証 : gcc-gdb-plugin-8.3.1-2.fc29.x86_64 9/22 検証 : gcc-gdb-plugin-8.2.1-6.fc29.x86_64 10/22 検証 : libgcc-8.3.1-2.fc29.x86_64 11/22 検証 : libgcc-8.2.1-6.fc29.x86_64 12/22 検証 : libgfortran-8.3.1-2.fc29.x86_64 13/22 検証 : libgfortran-8.2.1-2.fc29.x86_64 14/22 検証 : libgomp-8.3.1-2.fc29.x86_64 15/22 検証 : libgomp-8.2.1-6.fc29.x86_64 16/22 検証 : libquadmath-8.3.1-2.fc29.x86_64 17/22 検証 : libquadmath-8.2.1-2.fc29.x86_64 18/22 検証 : libstdc++-8.3.1-2.fc29.x86_64 19/22 検証 : libstdc++-8.2.1-6.fc29.x86_64 20/22 検証 : libstdc++-devel-8.3.1-2.fc29.x86_64 21/22 検証 : libstdc++-devel-8.2.1-6.fc29.x86_64 22/22 アップグレード済み: cpp-8.3.1-2.fc29.x86_64 gcc-8.3.1-2.fc29.x86_64 gcc-c++-8.3.1-2.fc29.x86_64 gcc-gdb-plugin-8.3.1-2.fc29.x86_64 libgcc-8.3.1-2.fc29.x86_64 libgfortran-8.3.1-2.fc29.x86_64 libgomp-8.3.1-2.fc29.x86_64 libquadmath-8.3.1-2.fc29.x86_64 libstdc++-8.3.1-2.fc29.x86_64 libstdc++-devel-8.3.1-2.fc29.x86_64 インストール済み: boost-devel-1.66.0-14.fc29.x86_64 libquadmath-devel-8.3.1-2.fc29.x86_64 完了しました! $
書式だけじゃなく、「何番目をこの位置」にという指定を書ける。
C言語というよりPythonか・・・。
(むしろPythonがBoost派生?)
実行すると、
$ vi format.cpp $ g++ format.cpp -o format $ ./format 100 and ABCDE $
こうなる。
Sample/boost/format/format/src/format at master · bg1bgst333/Sample · GitHub