Overvies
CLX C++ Libraries は,文字列処理やネットワークプログラミングの補助などを行うための, ヘッダファイルのみで構成された C++ ライブラリです. CLX C++ Libraries は, BSDライセンスで配布しています.ソースコードの複製・改変は自由ですが, 自己責任でお願い致します.
Usage
CLX C++ Libraries を使用する際には,以下のファイルをダウンロードし, 解凍して出来た clx フォルダ以下のヘッダファイルを作業フォルダにコピーするか, または,インクルードオプションを適切に指定して下さい. CLX C++ Libraries で作成したクラスは clx 名前空間の中に定義してあります. 利用する場合は,直接指定するか適切な using ディレクティブを指定して下さい. 動作確認は gcc 4.0.2 (Linux), gcc 4.3.4 (cygwin),Visual Studio 2010, Borland C++ Compiler 5.5 で行っています. そのため,ソケット等システムに依存する部分はPOSIX および Windows のみに対応しています. また,コンパイラによっては利用できないライブラリも存在します.コンパイラ毎のエラー状況については, コンパイラ毎のエラー状況 を参照して下さい.
CLX C++ Libraris の一部のライブラリは,外部ライブラリを利用しています. これらのライブラリは Linux 環境ではデフォルトでインストールされている事も多いですが, Windows 環境にはインストールされていません.Windows 上で CLX C++ Libraries の全てのライブラリを使用するための環境設定については, VC++ 2010 の環境設定, Borland C++ Compiler 5.5 の環境設定などを参照して下さい.
最新のリリース,および関連ファイルは SourceForge.JP - CLX C++ Libraries から取得することができます. また,(リリース前の)最新のソースコードは, svn/clx, svn/clx/example にて閲覧/取得することができます.尚,clx_doc,clx_example はそれぞれ, 本サイトで公開しているリファレンス・ドキュメント, サンプルコード群をアーカイブ化したものです.ドキュメントをオフラインで閲覧したり, サンプルコードをまとめて取得したい場合は,以下のリンクからダウンロードして下さい. Web ページの表示チェックは,Internet Explorer 8.0, Firefox 3.6 で行っています.
使用例などについては,各ライブラリの説明ページの他,blog でもいくつか紹介しています.
Contents
- 文字列とテキスト
- salgorithm ..... 文字列アルゴリズム群
- adjust ..... 文字列の位置調整
- case_conv ..... 大文字/小文字の変換
- remove ..... 特定文字の消去
- replace ..... 文字列の置換
- split ..... 文字列の分割/結合
- strip ..... 空白文字の除去
- predicate ..... 叙述関数群
- cstring ..... C 標準ライブラリ (cstring) のラッパ関数群
- lexical_cast ..... 文字列 <-> 数値の相互変換
- code_convert ..... ナロー文字 <-> ワイド文字の相互変換
- tokenizer ..... 文字列のトークン分割
- tokenizer_func ..... 文字列分割のためのポリシークラス
- tokenmap ..... 文字列のトークン分割(マップコンテナ版)
- table ..... 整形済みテキストファイルの読み込み
- scanner ..... 書式付き文字列の読み込み
- format ..... 書式付き文字列の書き出し
- utf8 ..... UTF-8 の文字列を操作するための補助関数群
- ソケット
- socket ..... 各種ソケットの基底クラス
- sockaddress ..... ソケットアドレス
- udp::socket ..... UDP 用ソケット
- tcp::socket ..... TCP 用ソケット
- tcp::acceptor ..... TCP サーバ用ソケット
- ssl::socket ..... SSL 通信用ソケット
- ssl::acceptor ..... SSL 通信用サーバソケット
- icmp::socket ..... ICMP 用ソケット
- sockmanager ..... 複数のソケットの入力状況の管理
- sockhandler ..... sockhandler の実装例
- ssl::sockmanager ..... SSL ソケット用 sockmanager
- ネットワークサービス
- resolver ..... 名前解決
- localhost ..... ローカルホストの IP アドレスを取得
- http/https ..... HTTP/HTTPS (HTTP over SSL) 通信
- smtp/smtps ..... SMTP/SMTPS (SMTP over SSL) 通信
- pop3/pop3s ..... POP3/POP3S (POP3 over SSL) 通信
- ftp ..... FTP 通信
- hmac ..... HMAC によるダイジェストの計算
- wsse ..... WSSE 認証用 HTTP リクエスト文字列の生成
- json ..... JSON 形式データの解析
- エンコード
- uri ..... URI の encode/decode
- base64 ..... Base64 方式の encode/decode
- hexdump ..... 文字列を 16 進数で出力
- html::escape ..... html 制御文字のエスケープ
- ストリーム
- istream_utility ..... 入力ストリームの補助関数群
- vstream ..... 仮想ストリーム
- sockstream ..... ソケット通信用ストリーム
- zstream ..... zlib を用いた圧縮/解凍のためのストリームフィルタ
- unzip ..... zip の解凍
- スレッド
- thread ..... スレッドの作成,操作
- mutex ..... スレッド間での排他制御
- condition ..... スレッド間での待受/通知制御
- call_once ..... 特定の関数(オブジェクト)を一度だけ実行する関数
- 日付と時刻
- date_time ..... 日付と時刻
- string conversion ..... 書式付き文字列の入出力
- time_duration ..... 時間を扱うための補助クラス/関数
- timer ..... タイマー
- 数値
- unit ..... 単位を定義するためのクラス
- constrained_value ..... 制約付きの値
- random ..... ランダムな値の生成
- md5 ..... MD5 方式のハッシュ値の計算
- sha1 ..... SHA-1 方式のハッシュ値の計算
- stats ..... 統計計算
- quantile ..... 分位点の計算
- その他
- argument ..... コマンドライン引数解析
- ini ..... INI ファイルの操作
- filetype ..... ファイルタイプ判別関数群
- container_wrapper ..... STL コンテナを継承するためのラッパクラス
News
version 0.18.0 から Borland C++ Compiler に対応しました. ただし,Borland C++ Compiler で使用する場合,一部使用できないライブラリが存在します. Borland C++ Compiler で使用する場合の主な機能制限は以下の通りです.
コンパイラ毎のエラー状況については, コンパイラ毎のエラー状況 を参照して下さい (2010/07/31).
version 0.15.0 より zlib を利用した圧縮・解凍を行うライブラリ ( zstream, unzip) を追加しました.これらのライブラリを利用する際にはあらかじめ環境に zlib ライブラリをインストールしておく必要があります.zlib に関する詳細は, zlib Home Site を参照して下さい (2009/06/07).
version 0.13.0 より,SSL 通信用ライブラリを追加しました.SSL 通信用ライブラリ は OpenSSL を用いて実装しているため,利用する際にはあらかじめ環境に OpenSSL ライブラリをインストールしておく必要があります.OpenSSL に関する詳細は, OpenSSL - The Open Source toolkit for SSL/TLS ( OpenSSL 日本語サイト ) を参照して下さい (2008/10/23).
SourceForge.JP - 今月のプロジェクトに CLX C++ Libraries が紹介されました (2008/08/29).
Column
- 環境設定
- 文字列とテキスト
- ネットワーク
- マルチプラットフォームなソケットクラスの実装に関する覚書
- streambuf のカスタマイズ
- ネットワーク帯域計測プログラム
- 手抜き PING プログラム
- ICMP パケットを利用したパケット間隔ベースの帯域計測方法
- Hello, OpenSSL!
- OpenSSL と select
- ローカルホストの IP アドレス取得方法
- エンコード
- ストリーム
- スレッド
- 日付と時刻
- その他
- 基礎文法最速マスター まとめ
- エンディアンを考慮したメモリコピー
- CLX C++ Libraies の動作確認
- char から int へのキャスト時の問題
- 固定小数点数を double に変換
- コンパイル時チェック (STATIC_CHECK)
- 俺コーディング規則
- 終了処理とコピーコンストラクタ
- const の取り扱い
- コマンドラインから VC++ のコンパイラ (cl.exe) を使用する
- Microsoft Office ファイルの判別方法
- Boost 勉強会メモ
- 静的配列の要素数を取得する構文
- 複数の値を一つの変数に纏める関数 combine とメタ関数 combineN_
- TrueType フォント名を取得する
- Hello, wonderful logging world!
- どのような場面で new を使うか?
- エラー通知方法の古今東西
- クラス設計メモ
- イテレータの比較
- 既存のソースコードの読み方
History
- 2010/08/01 version 0.18.1
- Borland C++ Compiler で istream_utility.h で定義されている各関数をコンパイルする際にエラーが発生していた問題を修正.
- 2010/07/31 version 0.18.0
- Borland C++ Compiler に対応.
- 2010/06/19 version 0.17.1
- json のバグを修正.
- 2010/06/02 version 0.17.0
- ビット処理(バイト処理)を行うメタ関数 (lower_mask, upper_mask, combine, reverse, rotate, min, max) を新規作成.
bitmask を mpl::lower_mask, mpl::upper_mask に変更.
ini において,特定のセクションに属さない key=value 群の処理を追加(v[""][key] のようにしてアクセスする).
convert 関数を新規作成.また,hexdump, uri, html::escape, base64 を convert ベースに修正.
utf8 の関数を修正・追加.
utf16 の関数を追加(主にサロゲート・ペアへの対応). - 2010/01/14 version 0.16.2
- istream_utility を新規作成.
filetype に is_ttf(), is_ttc() 関数を追加.