//--------------------------------------------------// // 文字列クラス(C++用) strbuf.h version 1.2 // // copyright やすっち // // HomePage // // http://game12m.hp.infoseek.co.jp/ // // E-mail // // silvercra@yahoo.co.jp // // 自己PR // // シルバー王女、ハナちゃんなどが好きな一面も // // ある、風変わりな作者さんということで^^ // // // //--------------------------------------------------// // 商用ソフトなど全てにおいてのプログラムへの // // 導入、改変利用などは連絡不要で // // 全面許可いたしますが、プログラムそのものを // // 有料配布したりすること及び作者に不利益になる // // 行為などは禁止いたします。 // // 当然ながら作者自身もこのプログラムを // // 何らかの形で使用することもあります。 // // なお作者は当プログラムにより利用者が不利益を // // 生じたりしても一切責任を取る事は致しませんので、 // // 予めご了承ください。 // //--------------------------------------------------// // このクラスの内容はJavaなどのように出来る限り // // 演算子で簡単に文字列操作を実現できるように // // 作成したクラスです。 // // (現時点ではまだ不完全です…汗) // // 当プログラムは処理系依存はしないつもりで // // 作成していますが、VisualC++でしか // // 試していませんので動作保障は出来ません。 // // もちろんWinAPI及びMFCなどは未使用です。 // //--------------------------------------------------// #ifndef __STRING_BUFFER_H__ #define __STRING_BUFFER_H__ #include #include #include "e_throw.h" // 処理系にあわせてどちらの文字型を使用するか選んでください(元々はVisualC++用にあわせています) // VCの場合はなぜかsignedもunsignedも通りませんでしたので、わざわざ三つ用意しています。(なぜだ…?) // 万一定義名が競合したらお手数ですが、全て置換してください。 #ifndef __CHARACTER_DEFINED__ #define __CHARACTER_DEFINED__ //typedef signed char CHAR; //typedef unsigned char CHAR; typedef char CHAR; #endif // 例外の送出(throw)の有無を指定します、無しにした場合には、 // あってはならないデータの対処が出来なくなりますので、 // その為に起こり得る振る舞いは、一切保障できませんのでご注意ください。 #ifndef __ERROR_DEFINED__ #define __ERROR_DEFINED__ #define ERROR_THROWS 1 // 例外処理を送出させる場合は1、送出させない場合は0を指定してください #endif #if ERROR_THROWS #include #endif // 文字列バッファクラス定義 class StringBuffer{ private: // プライベートメンバ(現在すっからかん…汗) protected: // プロテクトメンバ CHAR *buf; // 文字列バッファ int len; // 文字列の長さ public: // パブリックメンバ // コンストラクタ StringBuffer(); // 使用禁止です StringBuffer(int size); // 現在は継承しない場合は役に立ちません(爆) StringBuffer(CHAR *str); // 指定文字列で作成 // デストラクタ ~StringBuffer(); // 文字列操作演算子 StringBuffer* operator + (StringBuffer *strbuf); // 文字列結合 StringBuffer* operator + (CHAR str[]); // 文字列結合 StringBuffer* operator - (int dellen); // 文字列削減 StringBuffer* operator | (CHAR str[]); // 文字列ビット演算 StringBuffer* operator & (CHAR str[]); // 文字列ビット演算 StringBuffer* operator ^ (CHAR str[]); // 文字列ビット演算 // 文字列操作関数 void reverse(); // 文字列反転並べ替え(注意…半角専用です) // データ及び状態所得関数 CHAR* toString(); // 文字列呼び出し(注意…格納バッファ実体ではなくコピーです) int toDigit(); // 10進数に変換して返す(注意…数字文字以外が含まれた場合は、例外を送出します) int length(); // 文字列の長さ所得 }; #endif