|
*ホーム![]() |
☆更新日 : ----/--/-- |
![]() |
![]() |
![]() |
CIkoStr のヘルプ目次 |
![]() |
☆CIkoStr の概要 ☆_beginthreadex での注意点 ☆CIkoStr を使う ☆= 演算子 (代入) ☆+ 演算子 (連結) ☆+= 演算子 (連結代入) ☆比較演算子 └== != < > <= >= ☆引数 LPCTSTR ☆引数 LPTSTR ☆operator[] ☆GetAt ☆SetAt ☆GetLen └GetLength ☆GetStrCount ☆Insert ☆InsertMB ☆InsertR ☆InsertRMB Cut ☆Trim ☆TrimL └TrimLeft ☆TrimR └TrimRight ☆Mid ☆Left ☆Right ☆MidMB ☆LeftMB ☆RightMB ☆Compare ☆CompareNC └CompareNoCase ☆Find ☆FindMB ☆FindNC ☆FindNCMB ☆RFind └ReverseFind ☆RFindMB ☆Format ☆NumToStr ☆NumToStr64 ☆StrToNum ☆StrToNum64 ☆NumToStrVer ☆InsertComma ☆Enclose ☆HanToZen ☆ZenToHan ☆ExpandEnvStr ☆PermStr └Replace ☆PermStrMB ☆InStrCount ☆Clear └Empty ☆Delete ☆IsEmpty ☆MakeUpper ☆MakeLower ☆c ☆t GetWndText └GetWindowText SetWndText └SetWindowText FormatByteSize64 ☆LoadStr ☆GetCrUserName ☆LoadTextFile ☆SaveTextFile ☆Attach ☆Detach ☆GetBuff ☆GetBuffSize ☆ResetLen ☆SetBuffSize おまけ ☆iTRACE マクロ ☆iASSERT マクロ ☆iVERIFY マクロ ☆バージョンアップ履歴 |
![]() |
![]() |
概要 |
![]() |
◆「CIkoStr」とは、C++ 言語で文字列を文字列として扱うことのできる、MFC CString のようなかんたん文字列クラスです。 以下のように使うことができます。
![]() ◆ユニコードと、MBCS を考慮した ANSI に対応しています。 プログラムのターゲット (#define _UNICODE の有無) によって以下のように内部で扱う型が変わり、TCHAR 型としてそのまま使えます。 ・ユニコード (#define _UNICODE あり): wchar_t ・ANSI (#define _UNICODE なし): char ・両対応: TCHAR ![]() ◆CIkoStr の作成時と、=、+、+= による代入時に、現在の型とは違う型 (wchar_t、char) を渡すと、現在の型に変換されて格納されます。
|
![]() |
![]() |
_beginthreadex での注意点 |
![]() |
CIkoStr を _beginthreadex で起動したスレッド内で作成して使う場合、少し注意が必要です。
これを回避するには、_endthreadex を呼び出す前に、CIkoStr の Delete() メンバ関数を呼び出してください。 これにより該当 CIkoStr は削除され、メモリリークは起こらなくなります。 ![]() |
![]() |
![]() |
CIkoStr を使う |
![]() |
◆インクルードについて。 Visual C++ の場合は以下のファイルをプロジェクトに取り込んでください。 IkoDef.h IkoStr.h IkoStr.cpp ![]() そして IkoDef.h、IkoStr.h をインクルードする前に tchar.h、mbstring.h、wchar.h、stdarg.h 等文字列を扱うためのそれっぽいファイルをインクルードしてください。(ユニコード/ANSI で必要なものが若干変わります。) ![]() ※Visual C++ でプリコンパイル済みヘッダーを使用しない場合は、IkoStr.cpp の冒頭にある #include "stdafx.h" をコメントアウトしてください。 ◆CIkoStr の作り方。 // 空の CIkoStr を作成 CIkoStr isStr; ![]() // 文字列を指定した CIkoStr を作成 CIkoStr isStr( LPCTSTR ); 例: CIkoStr isStr( _T("ちっちゃいものクラブ") ); CIkoStr isStr = _T("ちっちゃいものパラダイス"); ![]() // NULL 文字を含まない単一文字で CIkoStr を作成 (NULL は付加されます) CIkoStr isStr( TCHAR ); 例: CIkoStr isStr( _T('a') ); CIkoStr isStr = _T('x'); ![]() // バッファサイズ (配列要素数) を指定して CIkoStr を作成 CIkoStr isStr( int ); 例: CIkoStr isStr( 256 ); // = TCHAR sStr[256]; 後は後述の関数や演算子で文字列を代入したり連結したり好きにできます。 |
![]() |
![]() |
= 演算子による代入 |
![]() |
CIkoStr は = 演算子により文字列をそのまま代入できます。 CIkoStr isStr; isStr = _T("クリスマスプレゼントに妹をおねだり"); ![]() |
![]() |
![]() |
+ 演算子による連結 |
![]() |
CIkoStr は + 演算子により文字列と文字列を連結できます。 CIkoStr isStr1( _T("妹を") ); CIkoStr isStr2( _T("メイドさんにする方法") ); CIkoStr isStr3; isStr3 = isStr1 + isStr2; // isStr3 = "妹をメイドさんにする方法" ![]() |
![]() |
![]() |
+= 演算子による連結代入 |
![]() |
CIkoStr は += 演算子により文字列と文字列を連結 (追加) 代入できます。 CIkoStr isStr1( _T("弟を") ); CIkoStr isStr2( _T("メイドさんにする方法") ); isStr1 += isStr2; // isStr1 = "弟をメイドさんにする方法" ![]() |
![]() |
![]() |
比較演算子 |
![]() |
CIkoStr は以下の比較演算子が使用可能です。
|
![]() |
![]() |
引数 LPCTSTR |
![]() |
CIkoStr は様々な関数の引数 LPCTSTR に直接渡すことができます。 CIkoStr isStr( _T("カレーうどんタイマー") ); SetWindowText( hWnd, isStr ); // hWnd のタイトルが "カレーうどんタイマー" に。 ![]() ただし、printf のような可変引数に CIkoStr を渡す場合は、.t() を付けるか、明示的に LPCTSTR へキャストする必要があります。 詳しくは .t() を参照してください。 |
![]() |
![]() |
引数 LPTSTR |
![]() |
CIkoStr は様々な関数の引数 LPTSTR に GetBuff() メンバ関数を使うことで直接渡すことができます。 CIkoStr isStr( 100 ); // = TCHAR sStr[100]; GetWindowText( hWnd, isStr.GetBuff(), 100 ); isStr.ResetLen(); // GetBuff() で中身を書き換えたら必ず ResetLen() を呼び出す ![]() ※CIkoStr を LPTSTR として渡す時は、必ずバッファサイズを正しく分かっている状態で使用し、その後他のメンバ関数を使う前に ResetLen() を呼び出してください。 ![]() |
![]() |
![]() |
operator[] |
![]() |
TCHAR operator[]( int nIndex ) const; ★解説 配列指定で 1 文字取り出します。(NULL は含まないので取り扱い注意!) ![]() ★引数
![]() ★戻り値 NULL を含まない TCHAR 1 文字を返します。 ![]() ★使用例 CIkoStr isStr( _T("abcdefg") ); TCHAR chStr = isStr[1]; // 結果: chStr = 'b' 注: ANSI では仕様上 2 バイト文字を取り出すことはできません。 |
![]() |
![]() |
GetAt |
![]() |
TCHAR GetAt( int nIndex ) const; ★解説 配列指定で 1 文字取り出します。(NULL は含まないので取り扱い注意!) ![]() ★引数
![]() ★戻り値 NULL を含まない TCHAR 1 文字を返します。 ![]() ★使用例 CIkoStr isStr( _T("abcdefg") ); TCHAR chStr = isStr.GetAt( 1 ); // 結果: chStr = 'b' 注: ANSI では仕様上 GetAt() で 2 バイト文字を取り出すことはできません。 |
![]() |
![]() |
SetAt |
![]() |
void SetAt( int nIndex, LPCTSTR pStr ); void SetAt( int nIndex, TCHAR chStr ); ★解説 現在の文字列中の 1 文字を設定します。 ![]() ★引数
![]() ★戻り値 この関数に戻り値はありません。 ![]() ★使用例 CIkoStr isStr( _T("abcdefg") ); isStr.SetAt( 1, 'B' ); // 結果: isStr = "aBcdefg" 注: ANSI では仕様上 SetAt() で 2 バイト文字を設定することはできません。 |
![]() |
![]() |
GetLen |
![]() |
int GetLen() const; int GetLength() const; ★解説 文字列の長さを調べます。(NULL は数えません) ANSI での 2 バイト文字は 2 文字として数えます。 ![]() ★戻り値 文字列の長さを返します。 ![]() ★使用例 CIkoStr isStr( _T("ぷにゃー") ); int nLen = isStr.GetLen(); // 結果: ユニコード: nLen = 4 ANSI: nLen = 8 |
![]() |
![]() |
GetStrCount |
![]() |
int GetStrCount() const; ★解説 文字数を調べます。(NULL は数えません) ANSI での 2 バイト文字は 1 文字として数えます。 ![]() ★戻り値 文字列の文字数を返します。 ![]() ★使用例 CIkoStr isStr( _T("いちごショートケーキ") ); int nLen = isStr.GetStrCount(); // 結果: nLen = 10 |
![]() |
![]() |
Insert |
![]() |
BOOL Insert( int nFirst, LPCTSTR pStr ); ★解説 現在の文字列に別の文字列を挿入します。 ANSI での 2 バイト文字は 2 文字として数えます。 ![]() ★引数
![]() ★戻り値 関数が成功すれば TRUE を返します。 それ以外は FALSE を返します。 ![]() ★使用例 CIkoStr isStr( _T("闇パーティ") ); ANSI: isStr.Insert( 2, _T("鍋") ); ユニコード: isStr.Insert( 1, _T("鍋") ); // 結果: isStr = "闇鍋パーティ" |
![]() |
![]() |
InsertMB |
![]() |
BOOL InsertMB( int nFirst, LPCTSTR pStr ); ★解説 現在の文字列に別の文字列を挿入します。 ANSI での 2 バイト文字は 1 文字として数えます。 ![]() ★引数
![]() ★戻り値 関数が成功すれば TRUE を返します。 それ以外は FALSE を返します。 ![]() ★使用例 CIkoStr isStr( _T("The月刊コーヒーTime") ); isStr.InsertMB( 5, _T("妹と") ); // 結果: isStr = "The月刊妹とコーヒーTime" |
![]() |
![]() |
InsertR |
![]() |
BOOL InsertR( int nLast, LPCTSTR pStr ); ★解説 現在の文字列に別の文字列を挿入します。 ANSI での 2 バイト文字は 2 文字として数えます。 Insert() が挿入位置を最初から数えるのに対し、InsertR() は最後から数えます。 ![]() ★引数
![]() ★戻り値 関数が成功すれば TRUE を返します。 それ以外は FALSE を返します。 ![]() ★使用例 ANSI: CIkoStr isStr( _T("メイドさんとの生活") ); isStr.InsertR( 4, _T("ラブラブ") ); // 結果: isStr = "メイドさんとのラブラブ生活" ![]() ユニコード: CIkoStr isStr( _T("メイドさんとのラブラブ生活") ); isStr.InsertR( 2, _T("新婚") ); // 結果: isStr = "メイドさんとのラブラブ新婚生活" |
![]() |
![]() |
InsertRMB |
![]() |
BOOL InsertRMB( int nLast, LPCTSTR pStr ); ★解説 現在の文字列に別の文字列を挿入します。 ANSI での 2 バイト文字は 1 文字として数えます。 Insert() が挿入位置を最初から数えるのに対し、InsertR() は最後から数えます。 ![]() ★引数
![]() ★戻り値 関数が成功すれば TRUE を返します。 それ以外は FALSE を返します。 ![]() ★使用例 CIkoStr isStr( _T("国際デー") ); isStr.InsertRMB( 2, _T("メイドさん") ); // 結果: isStr = "国際メイドさんデー" |
![]() |
![]() |
Cut |
![]() |
CIkoStr Cut( int nFirst, int nStr ); ★解説 現在の文字列の指定位置から指定文字数をカットして切り詰めます。 ANSI での 2 バイト文字は 1 文字として数えます。 ![]() ★引数
![]() ★戻り値 関数が成功すればカットした文字列を返します。 それ以外は空白 _T("") を返します。 ![]() ★使用例 CIkoStr isStr( _T("ゲームは1日12時間") ); CIkoStr isCutStr; isCutStr = isStr.Cut( 7, 1 ); // 結果: isStr = "ゲームは1日1時間" // isCutStr = "2" |
![]() |
![]() |
Trim |
![]() |
void Trim( LPCTSTR pTrimStr = _T(" ") ); ★解説 先頭と末尾にある指定の文字をすべて削除します。 指定の文字でも、未指定の文字に挟まれている場合は削除されないことに注意してください。あくまで「先頭と末尾にある文字」が対象です。 引数を指定しないときは半角スペースを削除します。 ![]() ★引数
![]() ★戻り値 この関数に戻り値はありません。 ![]() ★使用例 CIkoStr isStr( _T("☆15 歳の妹と 18 歳の姉妹☆") ); isStr.Trim( _T("1妹☆") ); // 結果: isStr = "5 歳の妹と 18 歳の姉" |
![]() |
![]() |
TrimL |
![]() |
void TrimL( LPCTSTR pTrimStr = _T(" ") ); void TrimLeft( LPCTSTR pTrimStr = _T(" ") ); ★解説 先頭にある指定の文字をすべて削除します。 引数を指定しないときは半角スペースを削除します。 ![]() ★引数
![]() ★戻り値 この関数に戻り値はありません。 ![]() ★使用例 CIkoStr isStr( _T("☆15 歳の妹と 18 歳の姉妹☆") ); isStr.TrimL( _T("1妹☆") ); // 結果: isStr = "5 歳の妹と 18 歳の姉妹☆" |
![]() |
![]() |
TrimR |
![]() |
void TrimR( LPCTSTR pTrimStr = _T(" ") ); void TrimRight( LPCTSTR pTrimStr = _T(" ") ); ★解説 末尾にある指定の文字をすべて削除します。 引数を指定しないときは半角スペースを削除します。 ![]() ★引数
![]() ★戻り値 この関数に戻り値はありません。 ![]() ★使用例 CIkoStr isStr( _T("☆15 歳の妹と 18 歳の姉妹☆") ); isStr.TrimR( _T("1妹☆") ); // 結果: isStr = "☆15 歳の妹と 18 歳の姉" |
![]() |
![]() |
Mid |
![]() |
CIkoStr Mid( int nFirst, int nCount ) const; CIkoStr Mid( int nFirst ) const; ★解説 文字列を抽出します。 ANSI での 2 バイト文字は 2 文字として数えます。 ![]() ★引数
![]() ★戻り値 抽出された文字列を CIkoStr 型で返します。 ![]() ★使用例 CIkoStr isStr1( _T("チョコレート工場") ); CIkoStr isStr2; isStr2 = isStr1.Mid( 6, 0 ); // 結果: ユニコード: isStr2 = "工場" ANSI: isStr2 = "レート工場" ![]() isStr2 = isStr1.Mid( 6, 2 ); // 結果: ユニコード: isStr2 = "工場" ANSI: isStr2 = "レ" |
![]() |
![]() |
Left |
![]() |
CIkoStr Left( int nCount ) const; ★解説 先頭から文字列を抽出します。 ANSI での 2 バイト文字は 2 文字として数えます。 ![]() ★引数
![]() ★戻り値 抽出された文字列を CIkoStr 型で返します。 ![]() ★使用例 CIkoStr isStr1( _T("チョコレート工場") ); CIkoStr isStr2; isStr2 = isStr1.Left( 6 ); // 結果: ユニコード: isStr2 = "チョコレート" ANSI: isStr2 = "チョコ" |
![]() |
![]() |
Right |
![]() |
CIkoStr Right( int nCount ) const; ★解説 末尾から文字列を抽出します。 ANSI での 2 バイト文字は 2 文字として数えます。 ![]() ★引数
![]() ★戻り値 抽出された文字列を CIkoStr 型で返します。 ![]() ★使用例 CIkoStr isStr1( _T("チョコレート工場") ); CIkoStr isStr2; isStr2 = isStr1.Right( 6 ); // 結果: ユニコード: isStr2 = "コレート工場" ANSI: isStr2 = "ト工場" |
![]() |
![]() |
MidMB |
![]() |
CIkoStr MidMB( int nFirst, int nCount ) const; CIkoStr MidMB( int nFirst ) const; ★解説 文字列を抽出します。 ANSI での 2 バイト文字は 1 文字として数えます。 ![]() ★引数
![]() ★戻り値 抽出された文字列を CIkoStr 型で返します。 ![]() ★使用例 CIkoStr isStr1( _T("チョコレート工場") ); CIkoStr isStr2; isStr2 = isStr1.MidMB( 6, 0 ); // 結果: ユニコード: isStr2 = "工場" ANSI: isStr2 = "工場" ![]() isStr2 = isStr1.MidMB( 6, 1 ); // 結果: ユニコード: isStr2 = "工" ANSI: isStr2 = "工" |
![]() |
![]() |
LeftMB |
![]() |
CIkoStr LeftMB( int nCount ) const; ★解説 先頭から文字列を抽出します。 ANSI での 2 バイト文字は 1 文字として数えます。 ![]() ★引数
![]() ★戻り値 抽出された文字列を CIkoStr 型で返します。 ![]() ★使用例 CIkoStr isStr1( _T("チョコレート工場") ); CIkoStr isStr2; isStr2 = isStr1.LeftMB( 6 ); // 結果: ユニコード: isStr2 = "チョコレート" ANSI: isStr2 = "チョコレート" |
![]() |
![]() |
RightMB |
![]() |
CIkoStr RightMB( int nCount ) const; ★解説 末尾から文字列を抽出します。 ANSI での 2 バイト文字は 1 文字として数えます。 ![]() ★引数
![]() ★戻り値 抽出された文字列を CIkoStr 型で返します。 ![]() ★使用例 CIkoStr isStr1( _T("チョコレート工場") ); CIkoStr isStr2; isStr2 = isStr1.RightMB( 6 ); // 結果: ユニコード: isStr2 = "コレート工場" ANSI: isStr2 = "コレート工場" |
![]() |
![]() |
Compare |
![]() |
int Compare( LPCTSTR pStr ) const; ★解説 大文字と小文字を区別して文字列を比較します。 ![]() ★引数
![]() ★戻り値 比較する文字列が辞書順で、 現在の文字列と同じなら 0 を返します。 現在の文字列より小さければ 0 より大きい値を返します。 現在の文字列より大きければ 0 より小さい値を返します。 ![]() こう書くとややこしいですが、要するに比較する文字列が同じなら 0 が返り、違っていたら 0 以外が返るということです。 ![]() ★使用例 CIkoStr isStr( _T("Love! Love! メイドさん☆") ); int nRet = isStr.Compare( _T("LOVE! LOVE! メイドさん☆") ); // 結果: nRet = 0 以外 (不一致) |
![]() |
![]() |
CompareNC |
![]() |
int CompareNC( LPCTSTR pStr ) const; int CompareNoCase( LPCTSTR pStr ) const; ★解説 大文字と小文字を区別しないで文字列を比較します。 ![]() ★引数
![]() ★戻り値 比較する文字列が辞書順で、 現在の文字列と同じなら 0 を返します。 現在の文字列より小さければ 0 より大きい値を返します。 現在の文字列より大きければ 0 より小さい値を返します。 ![]() ★使用例 CIkoStr isStr( _T("Love! Love! メイドさん☆") ); int nRet = isStr.CompareNC( _T("LOVE! LOVE! メイドさん☆") ); // 結果: nRet = 0 (一致) |
![]() |
![]() |
Find |
![]() |
int Find( LPCTSTR pStr, int nStart = 0 ) const; ★解説 文字列を検索します。 ANSI での 2 バイト文字は 2 文字として数えます。 ただし、2 バイト文字の 2 バイト目の特殊文字 (\ 等) には反応しません。 ![]() ★引数
![]() ★戻り値 検索文字列が見つかると、0 からの位置を返します。 それ以外は -1 を返します。 ![]() ★使用例 CIkoStr isStr( _T("チーズケーキの次はチョコレートケーキ") ); int nRet = isStr.Find( _T("ケーキ"), 0 ); // 結果: ユニコード: nRet = 3 ANSI: nRet = 6 int nRet = isStr.Find( _T("ケーキ"), 8 ); // 結果: ユニコード: nRet = 15 ANSI: nRet = 30 |
![]() |
![]() |
FindMB |
![]() |
int FindMB( LPCTSTR pStr, int nStart = 0 ) const; ★解説 文字列を検索します。 ANSI での 2 バイト文字は 1 文字として数えます。 ただし、2 バイト文字の 2 バイト目の特殊文字 (\ 等) には反応しません。 ![]() ★引数
![]() ★戻り値 検索文字列が見つかると、0 からの位置を返します。 それ以外は -1 を返します。 ![]() ★使用例 CIkoStr isStr( _T("メイドさん対メイドロボ") ); int nRet = isStr.FindMB( _T("メイド"), 0 ); // 結果: nRet = 0 int nRet = isStr.FindMB( _T("メイド"), 1 ); // 結果: nRet = 6 |
![]() |
![]() |
FindNC |
![]() |
int FindNC( LPCTSTR pStr, int nStart = 0 ) const; ★解説 大文字・小文字を区別しないで文字列を検索します。 ANSI での 2 バイト文字は 2 文字として数えます。 ただし、2 バイト文字の 2 バイト目の特殊文字 (\ 等) には反応しません。 ![]() ★引数
![]() ★戻り値 検索文字列が見つかると、0 からの位置を返します。 それ以外は -1 を返します。 ![]() ★使用例 CIkoStr isStr( _T("Love☆Love Maid Life!") ); int nRet = isStr.FindNC( _T("LOVE"), 0 ); // 結果: nRet = 0 int nRet = isStr.FindNC( _T("love"), 1 ); // 結果: nRet = 6 |
![]() |
![]() |
FindNCMB |
![]() |
int FindNCMB( LPCTSTR pStr, int nStart = 0 ) const; ★解説 大文字・小文字を区別しないで文字列を検索します。 ANSI での 2 バイト文字は 1 文字として数えます。 ただし、2 バイト文字の 2 バイト目の特殊文字 (\ 等) には反応しません。 ![]() ★引数
![]() ★戻り値 検索文字列が見つかると、0 からの位置を返します。 それ以外は -1 を返します。 ![]() ★使用例 CIkoStr isStr( _T("Love☆Love Maid Wife!") ); int nRet = isStr.FindNCMB( _T("love"), 0 ); // 結果: nRet = 0 int nRet = isStr.FindNCMB( _T("love"), 1 ); // 結果: nRet = 5 |
![]() |
![]() |
RFind |
![]() |
int RFind( LPCTSTR pStr ) const; int RFind( TCHAR chStr ) const; int ReverseFind( LPCTSTR pStr ) const; int ReverseFind( TCHAR chStr ) const; ★解説 文字列を末尾から検索します。 ANSI での 2 バイト文字は 2 文字として数えます。 ただし、2 バイト文字の 2 バイト目の特殊文字 (\ 等) には反応しません。 ![]() ★引数
![]() ★戻り値 検索文字列が見つかると、0 からの位置を返します。 それ以外は -1 を返します。 ![]() ★使用例 CIkoStr isStr( _T("チーズケーキの次もチーズケーキ") ); int nRet = isStr.RFind( _T("チーズ") ); // 結果: ユニコード: nRet = 9 ANSI: nRet = 18 |
![]() |
![]() |
RFindMB |
![]() |
int RFindMB( LPCTSTR pStr ) const; int RFindMB( TCHAR chStr ) const; ★解説 文字列を末尾から検索します。 ANSI での 2 バイト文字は 1 文字として数えます。 ただし、2 バイト文字の 2 バイト目の特殊文字 (\ 等) には反応しません。 ![]() ★引数
![]() ★戻り値 検索文字列が見つかると、0 からの位置を返します。 それ以外は -1 を返します。 ![]() ★使用例 CIkoStr isStr( _T("妹メイド対弟メイド") ); int nRet = isStr.RFindMB( _T("メイド") ); // 結果: nRet = 6 |
![]() |
![]() |
Format |
![]() |
BOOL Format( LPCTSTR pFormat, ... ); ★解説 文字列を printf() の書式でフォーマットして格納します。 書式については printf() 関数を参照してください。 ![]() ★引数
![]() ★戻り値 関数が成功すると TRUE を返します。 それ以外は FALSE を返します。 ![]() ★使用例 CIkoStr isStr; CIkoStr isImouto( _T("妹") ); int nAgeAne = 18; isStr.Format( _T("%sは5歳です。姉は永遠に%i歳です。"), isImouto.t(), nAgeAne ); // 結果: isStr = "妹は5歳です。姉は永遠に18歳です。" ※Format 関数の可変引数に CIkoStr を渡す場合は、必ず .t() を付けてください。 もしくは明示的に LPCTSTR にキャストしてください。 |
![]() |
![]() |
NumToStr |
![]() |
void NumToStr( int nNum ); void NumToStr64( __int64 nNum ); void NumToStr64( DWORD dwHigh, DWORD dwLow ); ★解説 数値を文字列に変換して格納します。 ![]() ★引数
![]() ★戻り値 この関数に戻り値はありません。 ![]() ★使用例 CIkoStr isStr; int nNum = 15; isStr.NumToStr( nNum ); // 結果: isStr = "15" |
![]() |
![]() |
StrToNum |
![]() |
int StrToNum() const; __int64 StrToNum64() const; ★解説 現在の文字列を int 型、__int64 型に変換します。 ![]() ★戻り値 現在の文字列を int 型、__int64 型に変換して返します。 文字列が空の場合は 0 を返します。 ![]() ★使用例 CIkoStr isStr( _T("26") ); int nNum = isStr.StrToNum(); // 結果: nNum = 26 |
![]() |
![]() |
NumToStrVer |
![]() |
void NumToStrVer( int nNum ); ★解説 指定の数値を "0.00" のバージョン表記に整形します。 ![]() ★引数
![]() ★戻り値 この関数に戻り値はありません。 ![]() ★使用例 CIkoStr isStr; int nNum = 123; isStr.NumToStrVer( nNum ); // 結果: isStr = "1.23" |
![]() |
![]() |
InsertComma |
![]() |
int InsertComma(); int InsertComma( LPCTSTR psComma = NULL, int nSpace = 3, int nMode = 1 ); ★解説 現在の文字列を "," で区切って整形します。 ![]() ★引数
![]() ★戻り値 文字列が区切られたら、挿入された区切り文字数を返します。 それ以外は 0 を返します。 ![]() ★使用例 CIkoStr isStr( _T("29800") ); int nNum = isStr.InsertComma(); // 結果: // isStr = "29,800" // nNum = 1 |
![]() |
![]() |
Enclose |
![]() |
BOOL Enclose( LPCTSTR psLeft, LPCTSTR psRight = NULL, BOOL bCheck = TRUE );
★解説 文字列を指定文字列で囲みます。 ![]() ★引数
![]() ★戻り値 文字列が囲まれたら TRUE を返します。 それ以外は FALSE を返します。 bCheck で TRUE を指定した場合、現在の文字列に変化がなくても (すでに囲まれていた場合でも) TRUE を返します。 ![]() ★使用例 CIkoStr isStr( _T("Program Files") ); isStr.Enclose( _T("\"") ); // 結果: // isStr = ""Program Files"" isStr = _T("|∵|"); isStr.Enclose( _T("┌"), _T("┘") ); // 結果: // isStr = "┌|∵|┘" |
![]() |
![]() |
HanToZen |
![]() |
int HanToZen( UINT uMode = CIS_ALL ); ★解説 文字列の中の半角文字を全角文字にします。 ![]() ★引数
![]() ★戻り値 変換した文字の合計数を返します。 ![]() ★使用例 CIkoStr isStr( _T("スキすきChu!") ); int nRet; nRet = isStr.HanToZen(); // 結果: isStr = "スキすきChu!" // nRet = 6; -or- nRet = isStr.HanToZen( CIS_ALPHABET | CIS_KIGOU ); // 結果: isStr = "スキすきChu!" // nRet = 4; -or- nRet = isStr.HanToZen( CIS_KATAKANA ); // 結果: isStr = "スキすきChu!" // nRet = 2; |
![]() |
![]() |
ZenToHan |
![]() |
int ZenToHan( UINT uMode = CIS_ALL ); ★解説 文字列の中の全角文字を半角文字にします。 ![]() ★引数
![]() ★戻り値 変換した文字の合計数を返します。 ![]() ★使用例 CIkoStr isStr( _T("スキすきChu!") ); int nRet; nRet = isStr.ZenToHan(); // 結果: isStr = "スキすきChu!" // nRet = 6; -or- nRet = isStr.ZenToHan( CIS_ALPHABET | CIS_KIGOU ); // 結果: isStr = "スキすきChu!" // nRet = 4; -or- nRet = isStr.ZenToHan( CIS_KATAKANA ); // 結果: isStr = "スキすきChu!" // nRet = 2; |
![]() |
![]() |
ExpandEnvStr |
![]() |
void ExpandEnvStr(); ★解説 現在の文字列に含まれる %temp% 等の環境変数を展開します。 この結果はシステム依存であることに注意してください。 ![]() ★戻り値 この関数に戻り値はありません。 ![]() ★使用例 CIkoStr isStr( _T("%temp%") ); // 環境変数 %temp% は C:\Windows\temp と仮定 (実際はシステム依存) isStr.ExpandEnvStr(); // 結果: isStr = "C:\Windows\temp" |
![]() |
![]() |
PermStr |
![]() |
int PermStr( LPCTSTR pStrA, LPCTSTR pStrB, int nMax = 0 ); int Replace( LPCTSTR pStrA, LPCTSTR pStrB, int nMax = 0 ); ★解説 現在の文字列に含まれる指定の文字列を別の文字列に置き換えます。 ![]() ★引数
![]() ★戻り値 置き換えられた文字列の合計を返します。 ![]() ★使用例 CIkoStr isStr( _T("今日のご飯は%str%。多分明日も%str%。") ); int nRet = isStr.PermStr( _T("%str%"), _T("カレーうどん") ); // 結果: isStr = "今日のご飯はカレーうどん。多分明日もカレーうどん。" nRet = 2 |
![]() |
![]() |
PermStrNC |
![]() |
int PermStrNC( LPCTSTR pStrA, LPCTSTR pStrB, int nMax = 0 ); ★解説 大文字・小文字を区別しないで、現在の文字列に含まれる指定の文字列を別の文字列に置き換えます。 ![]() ★引数
![]() ★戻り値 置き換えられた文字列の合計を返します。 ![]() ★使用例 CIkoStr isStr( _T("今日のご飯は%str%。多分明日も%str%。") ); int nRet = isStr.PermStrNC( _T("%STR%"), _T("たまごかけご飯") ); // 結果: isStr = "今日のご飯はたまごかけご飯。多分明日もたまごかけご飯。" nRet = 2 |
![]() |
![]() |
InStrCount |
![]() |
int InStrCount( LPCTSTR pInStr ) const; ★解説 現在の文字列の中に指定の文字列が何個あるか調べます。 ![]() ★引数
![]() ★戻り値 指定文字列の総数を返します。 ![]() ★使用例 CIkoStr isStr( _T("すもも") ); int nRet = isStr.InStrCount( _T("も") ); // 結果: nRet = 2 |
![]() |
![]() |
Clear |
![]() |
void Clear(); void Empty(); ★解説 文字列を空にします。(現在のバッファを NULL 文字で埋めます。) ![]() ★戻り値 この関数に戻り値はありません。 ![]() ★使用例 CIkoStr isStr( _T("大金持ちになってメイドさんを雇いまくる") ); isStr.Clear(); // 結果: isStr = "" |
![]() |
![]() |
Delete |
![]() |
void Delete(); ★解説 内部バッファそのものを削除します。それまでの文字列はなくなります。 ただし、その後文字を代入すればまたバッファが作成されます。 ![]() ★戻り値 この関数に戻り値はありません。 ![]() ★使用例 CIkoStr isStr( _T("宝くじを当てて妹の服を買いまくる") ); isStr.Delete(); // 結果: isStr = NULL |
![]() |
![]() |
IsEmpty |
![]() |
BOOL IsEmpty() const; ★解説 文字列が空か調べます。 ![]() ★戻り値 現在の文字列が空なら TRUE を返します。 それ以外は (何らかの文字が入っていれば) FALSE を返します。 ![]() ★使用例 CIkoStr isStr( _T("たまごかけご飯") ); BOOL bRet = isStr.IsEmpty(); // 結果: bRet = FALSE isStr.Clear(); bRet = isStr.IsEmpty(); // 結果: bRet = TRUE |
![]() |
![]() |
MakeUpper |
![]() |
void MakeUpper(); ★解説 文字列 (アルファベット) を大文字にします。 ![]() ★戻り値 この関数に戻り値はありません。 ![]() ★使用例 CIkoStr isStr( _T("Chuっ☆") ); isStr.MakeUpper(); // 結果: isStr = "CHUっ☆" |
![]() |
![]() |
MakeLower |
![]() |
void MakeLower(); ★解説 文字列 (アルファベット) を小文字にします。 ![]() ★戻り値 この関数に戻り値はありません。 ![]() ★使用例 CIkoStr isStr( _T("Chuっ☆") ); isStr.MakeLower(); // 結果: isStr = "chuっ☆" |
![]() |
![]() |
c |
![]() |
LPCSTR c(); ★解説 ユニコードバージョンで、現在のユニコード文字列をマルチバイト (ANSI) 文字列に変換し、新しい別のバッファに格納してそのポインタを返します。(現在の文字列に影響はありません。) このポインタは一時的なものなので、後で使うことはできません。 MFC のデバッグ TRACE (ANSI のみ出力できる) 用に使うことを想定されています。 ANSI バージョンでは、変換もバッファ作成も行われず、ただ自身の文字列へのポインタを返すだけです。 ![]() ★戻り値 関数が成功するとマルチバイト文字列へのポインタを返します。 それ以外は NULL を返します。 ![]() ★使用例 CIkoStr isStr( L"ユニコード文字" ); TRACE( "%s", isStr.c() ); // 結果: デバッグウィンドウにマルチバイト文字に変換された "ユニコード文字" が出力される |
![]() |
![]() |
t |
![]() |
LPCTSTR t() const; ★解説 iTRACE 等の可変引数に CIkoStr を使う場合、(LPCTSTR) 等と明示的にキャストしないと文字化けする場合がありますが、そこでいちいち (LPCTSTR) 等と書くのがめんどくさい用のキャスト関数です。 ![]() ★戻り値 現在の文字列へのポインタを返します。 ![]() ★使用例 CIkoStr isStr( _T("トイプードルの可愛さは反則") ); iTRACE( _T("%s"), isStr.t() ); // 結果: デバッグウィンドウに "トイプードルの可愛さは反則" が正しく出力される |
![]() |
![]() |
GetWndText |
![]() |
BOOL GetWndText( HWND hWnd ); BOOL GetWindowText( HWND hWnd ); ★解説 CIkoStr に直接ウィンドウ タイトルを取得します。 ![]() ★引数
![]() ★戻り値 関数が成功すると TRUE を返します。 それ以外は FALSE を返します。 ![]() ★使用例 CIkoStr isStr; // HWND hWnd のウィンドウ タイトルが "メイド服の作り方" だと仮定。 BOOL bRet = isStr.GetWndText( hWnd ); // 結果: isStr = "メイド服の作り方" bRet = TRUE |
![]() |
![]() |
SetWndText |
![]() |
BOOL SetWndText( HWND hWnd ); BOOL SetWindowText( HWND hWnd ); ★解説 現在の文字列でウィンドウ タイトルを設定します。 ![]() ★引数
![]() ★戻り値 関数が成功すると TRUE を返します。 それ以外は FALSE を返します。 ![]() ★使用例 CIkoStr isStr = "妹の作り方" BOOL bRet = isStr.SetWndText( hWnd ); // 結果: hWnd のウィンドウ タイトルが "妹の作り方" に。 bRet = TRUE |
![]() |
![]() |
FormatByteSize64 |
![]() |
BOOL FormatByteSize64(); BOOL FormatByteSize64( __int64 nNum ); BOOL FormatByteSize64( DWORD dwHigh, DWORD dwLow ); ★解説 引数がない場合は現在の数字文字列を StrFormatByteSize64() 関数で整形します。 それ以外は引数の数値を整形します。 ![]() ★引数
![]() ★戻り値 関数が成功すると TRUE を返します。 それ以外は FALSE を返します。 ![]() ★使用例 CIkoStr isStr; __int64 nNum = (__int64)2400000000; BOOL bRet = isStr.FormatByteSize64( nNum ); // 結果: isStr = 2.23 GB bRet = TRUE ![]() nNum = (__int64)120000000; isStr.FormatByteSize64( nNum ); // 結果: isStr = 114 MB |
![]() |
![]() |
LoadStr |
![]() |
BOOL LoadStr( UINT uID, HINSTANCE hInst = NULL ); ★解説 リソーステーブルから文字列を取り出して格納します。 ![]() ★引数
![]() ★戻り値 関数が成功すると TRUE を返します。 それ以外は FALSE を返します。 ![]() ★使用例 CIkoStr isStr; // リソース番号 5001 に "酔って妹に蜂蜜シロップをかけようとする姉" があると仮定 BOOL bRet = isStr.LoadStr( 5001 ); // 結果: isStr = "酔って妹に蜂蜜シロップをかけようとする姉" bRet = TRUE |
![]() |
![]() |
GetCrUserName |
![]() |
BOOL GetCrUserName(); ★解説 現在のユーザー名を取得します。 ![]() ★戻り値 関数が成功すると TRUE を返します。 それ以外は FALSE を返します。 ![]() ★使用例 CIkoStr isStr; // 現在のユーザー名が Mary と仮定 BOOL bRet = isStr.GetCrUserName(); // 結果: isStr = "Mary" bRet = TRUE |
![]() |
![]() |
LoadTextFile |
![]() |
BOOL LoadTextFile( LPCTSTR pFilePath ); ★解説 テキストファイルから文字列を読み込みます。(超簡易版) 文字コードの変換は一切しないので、ユニコードバージョンなら UTF-16、ANSI なら Shift-JIS のみを読み込めます。 UTF-16 のファイルに BOM 情報があった場合、その部分は読み飛ばして文字情報のみ読み込みます。 またその場合、BOM が UTF-16 Big-Endian であった場合に限り、UTF-16 Little-Endian に変換して読み込みます。 ![]() ★引数
![]() ★戻り値 関数が成功すると TRUE を返します。 それ以外は FALSE を返します。 ![]() ★使用例 CIkoStr isStr; // 中身が "今日も良い一日でした。" の C:\Windows\test.txt というファイルがあると仮定 BOOL bRet = isStr.LoadTextFile( _T("C:\\Windows\\test.txt") ); // 結果: isStr = "今日も良い一日でした。" bRet = TRUE |
![]() |
![]() |
SaveTextFile |
![]() |
BOOL SaveTextFile( LPCTSTR pFilePath, BOOL bBOM = FALSE, int nEMode = 0 ); ★解説 テキストファイルに現在の文字列を上書きで書き込みます。(超簡易版) 文字コードの変換は一切しないので、ユニコードバージョンなら UTF-16、ANSI なら Shift-JIS で書き込みます。 また、改行コードの変換等も行いません。 (Windows での改行コードは \r\n にするのが一般的なようです。) ![]() ★引数
![]() ★戻り値 関数が成功すると TRUE を返します。 それ以外は FALSE を返します。 ![]() ★使用例 CIkoStr isStr( _T("今日も良い一日でした。\r\n明日も良い一日でありますように。") ); BOOL bRet = isStr.SaveTextFile( _T("C:\\Windows\\test.txt") ); // 結果: C:\Windows\test.txt というファイルが作成され、 今日も良い一日でした。 明日も良い一日でありますように。 という文字列が書き込まれる bRet = TRUE |
![]() |
![]() |
Attach |
![]() |
void Attach( LPTSTR pStr, int nBuffSize ); ★解説 既存の TCHAR 型バッファへのポインタ (LPTSTR) を CIkoStr に関連付けます。 以後この文字列は CIkoStr のメンバ関数で制御できます。 ただし、このポインタが指すバッファは内部バッファの内容 (文字列) が変更される関数で delete[] され、作り変えられるかもしれないことに注意してください。 また、CIkoStr のデストラクタでは必ず delete[] されますので、それが困る場合はその前に Detach() を呼び出してください。 ![]() 注: Attach 直後に文字列の長さを調べるので、Attach する前に最低でも 1 個の NULL 文字を入れておいてください。 ![]() ★引数
![]() ★戻り値 この関数に戻り値はありません。 ![]() ★使用例 CIkoStr isStr; TCHAR* pStr = new TCHAR[256](); pStr[0] = '\0'; isStr.Attach( pStr, 256 ); // 結果: pStr は CIkoStr に取り込まれ、以後 isStr として制御できます。 |
![]() |
![]() |
Detach |
![]() |
LPTSTR Detach();
★解説 現在の内部バッファへのポインタ (LPTSTR) を返し、CIkoStr から切り離します。 バッファサイズが必要な場合は Detach() する前に GetBuffSize() で取得しておいてください。 以後このポインタが指すバッファは CIkoStr の影響を受けません。 再び Attach() しない場合は、不要になった時点で必ず delete[] してください。さもないとメモリリークを起こします。 また、Detach() された CIkoStr は NULL 状態 (生まれたて) になり、再び別の文字列を代入したりできます。 ![]() ★戻り値 CIkoStr から切り離された TCHAR 型バッファへのポインタを返します。 NULL の可能性もあることに注意してください。 ![]() ★使用例 CIkoStr isStr( _T("CIkoStr は文字列を代入しないとバッファは作成されない") ); TCHAR* pStr = isStr.Detach(); // 結果: isStr は NULL になり、CIkoStr によって作成された pStr は以後 CIkoStr の影響を受けない |
![]() |
![]() |
GetBuff |
![]() |
LPTSTR GetBuff(); ★解説 CIkoStr が所持する TCHAR 型バッファへのポインタ (LPTSTR) を取得します。 主に他の関数の引数 LPTSTR へ CIkoStr を直接渡せるようにするものです。 GetBuff() で内部バッファをいじった後は、必ず ResetLen() を呼び出してください。 ![]() ★戻り値 CIkoStr が所持する TCHAR 型バッファへのポインタ (LPTSTR) を返します。 NULL の可能性もあることに注意してください。 ![]() ★使用例 CIkoStr isStr( 256 ); // バッファサイズ (配列要素数) 256 で作成 // hWnd のウィンドウタイトルが "若返りの薬を妹に飲み続けさせようとたくらむ姉の物語" と仮定 GetWindowText( hWnd, isStr.GetBuff(), 256 ); isStr.ResetLen() // GetBuff() した後は必ず ResetLen() を呼び出す // 結果: isStr = "若返りの薬を妹に飲み続けさせようとたくらむ姉の物語" |
![]() |
![]() |
GetBuffSize |
![]() |
int GetBuffSize() const; ★解説 現在のバッファサイズ (TCHAR 配列要素数) を取得します。 実際のバイト容量を得るには、これに sizeof(TCHAR) をかけてください。 GetBuffSize() * sizeof(TCHAR) = 実際のバイト容量 となります。 ![]() ★戻り値 現在のバッファサイズ (TCHAR 配列要素数) を返します。 文字列の長さと同じとは限らないことに注意してください。 ![]() ★使用例 CIkoStr isStr( 1024 ); int nBuffSize = isStr.GetBuffSize(); // 結果: nBuffSize = 1024 |
![]() |
![]() |
ResetLen |
![]() |
int ResetLen(); ★解説 内部に保存している文字列の長さを現在のバッファの文字列の長さに再設定します。 GetBuff() で内部バッファをいじった後は必ず ResetLen() を呼び出してください。 ![]() ★戻り値 再設定された文字列の長さを返します。 それ以外は 0 を返します。 ![]() ★使用例 GetBuff() を参照してください。 |
![]() |
![]() |
SetBuffSize |
![]() |
BOOL SetBuffSize( int nBuffSize ); ★解説 バッファサイズ (配列要素数) を変更します。それまでの文字列はなくなります。 ![]() ★引数
![]() ★戻り値 関数が成功すると TRUE を返します。 それ以外は FALSE を返します。 ![]() ★使用例 CIkoStr isStr( 64 ); BOOL bRet = isStr.SetBuffSize( 1024 ); // 結果: isStr のサイズが 64 から 1024 に変更される bRet = TRUE |
![]() |
![]() |
iTRACE マクロ |
![]() |
iTRACE( LPCTSTR pFormat, ... ); ★解説 デバッグビルド時のみ、デバッグウィンドウに文字列を printf() の書式でフォーマットして出力します。 MFC の TRACE マクロに相当します。 (ただし、iTRACE はユニコード文字列も出力できます。) リリースビルド時はこのマクロは何も行いません。 ![]() ★引数
![]() ★戻り値 このマクロに戻り値はありません。 ![]() ★使用例 CIkoStr isStr( _T("もじもじ") ); int nNum = 777; iTRACE( _T("デバッグ:[%s,%i]\n"), isStr.t(), nNum ); // 結果: デバッグウィンドウに以下の文字列が出力される。 デバッグ:[もじもじ,777] |
![]() |
![]() |
iASSERT マクロ |
![]() |
iASSERT( (戻り値が BOOL の式) ); ★解説 デバッグビルド時のみ、指定された式が FALSE (0) のときに、メッセージを出力しプログラムの実行を中止します。0 以外のときは何もしません。 MFC の ASSERT マクロに相当します。 リリースビルド時はこのマクロは式の評価を行いません。(このマクロの中にある評価式そのものが消滅するので、例えば関数呼び出しを書いた場合、その関数呼び出し自体がなかったことになります。) ![]() ★引数
![]() ★戻り値 このマクロに戻り値はありません。 ![]() ★使用例 CIkoStr isStr( _T("もじもじ") ); iASSERT( isStr.IsEmpty() ); // 結果: デバッグビルド時: IsEmpty() の結果が FALSE なのでデバッグウィンドウに以下のメッセージが出力され、プログラムが停止する。 iASSERT FALSE でちゃいましたっ! <ソースファイル名> (行番号) ![]() リリースビルド時: isStr.IsEmpty() の呼び出し自体がなくなる。 |
![]() |
![]() |
iVERIFY マクロ |
![]() |
iVERIFY( (戻り値が BOOL の式) ); ★解説 デバッグビルド時のみ、指定された式が FALSE (0) のときに、メッセージを出力しプログラムの実行を中止します。0 以外のときは何もしません。 MFC の VERIFY マクロに相当します。 リリースビルド時でもこのマクロは式の評価を行います。 ただし、式の評価が FALSE でもメッセージを表示したりプログラムを停止することはありません。 ![]() ★引数
![]() ★戻り値 このマクロに戻り値はありません。 ![]() ★使用例 CIkoStr isStr( _T("もじもじ") ); iVERIFY( isStr.IsEmpty() ); // 結果: デバッグビルド時: IsEmpty() の結果が FALSE なのでデバッグウィンドウに以下のメッセージが出力され、プログラムが停止する。 iVERIFY FALSE でちゃいましたっ! <ソースファイル名> (行番号) ![]() リリースビルド時: isStr.IsEmpty() は呼び出されるが、このマクロは何もしない。 |
![]() |
![]() |
バージョンアップ履歴 |
![]() |
2014/12/09:Ver1.09![]() (追加) 文字列を指定文字列で囲む Enclose() を追加しました。 (追加) PermStr()、PermStrNC() に、置き換える最大数を指定するオプションを追加しました。 |
2014/08/26:Ver1.08![]() (修正・変更) ANSIバージョンの Insert()、InsertR()、Mid()、Left()、Right()、Find() で、特定の文字が入っていると正しく 2 バイト文字の判定ができないことが分かったので、2 バイト文字判定は MB シリーズのみにしました。 (追加) 指定の数値を "0.00" のバージョン表記に整形する NumToStrVer() を追加しました。 |
2014/07/31:Ver1.07![]() (修正・変更) ANSIバージョンの Insert()、InsertR()、Mid()、Left()、Right()、Find() で、指定開始位置が 2 バイト文字の 2 バイト目にかかっているかチェックし、かかっていたら開始位置を 1 ずらすようにしました。 (追加) 大文字・小文字を区別しないで処理する FindNC()、FindNCMB()、PermStrNC() を追加しました。 |
2014/07/27:Ver1.06![]() (修正) ANSIバージョンの RFind() で、2 バイト文字の2バイト目に反応することがあったのを修正しました。("\" を検索して "表" の 2 バイト目にヒットする等) (修正) LoadTextFile() で、読み込みに成功した後、文字数とバッファサイズの情報を更新し忘れていたのを修正しました。 (修正・変更) UNICODEバージョンの LoadTextFile() で、BOM チェックを行い、BOM があった場合はその部分を読み飛ばすようにしました。 (変更) UNICODEバージョンの LoadTextFile() で、BOM チェックを行い、BOM が UTF-16 Big-Endian であった場合に限り、UTF-16 Little-Endian に変換して読み込めるようにしました。 (変更・追加) UNICODEバージョンの SaveTextFile() で、BOM を付加するオプションを追加しました。 (追加) ANSIバージョンの 2バイト文字を 1 文字として数えるシリーズに InsertMB()、InsertRMB()、FindMB()、RFindMB() を追加しました。 (追加) __int64 に対応した NumToStr64()、StrToNum64() を追加しました。 (追加) 数字文字列を "," で区切って整形する InsertComma() を追加しました。 (追加) その他、GetWndText()、SetWndText()、FormatByteSize64() を追加しました。 |
2014/06/09:Ver1.05![]() (修正) operator+=, LoadTextFile() で、メモリリークする可能性があった部分を修正しました。 |
2009/11/27:Ver1.04![]() (修正) Insert() で正しく処理できたのに FALSE を返していたのを修正しました。 (追加) 文字列を最後から数えて挿入する InsertR() を追加しました。 |
2009/06/10:Ver1.03![]() (修正) GetAt() でアクセス違反が起こっていたのを修正しました。 (追加) 半角文字を全角文字にする HanToZen() を追加しました。 (追加) 全角文字を半角文字にする ZenToHan() を追加しました。 (変更) NULL 状態の CIkoStr に = 演算子で長さ 0 の文字列 _T("") を代入するとき、1 文字のバッファを作って _T("") となるようにしました。(今までは NULL のまま変わりませんでした。) (変更・修正) NULL 状態でない CIkoStr に別のバッファを Attach() する場合、既存バッファを削除するようにしました。 (修正) LoadStr() でプログラムターゲットが ANSI の場合、1 バイト文字と 2 バイト文字が混在したリソース文字列でまだ 128 バイト以上のものが正しく取得できない場合があった不具合を修正しました。 (変更) Microsoft Windows SDK 6.2.6000.0.18 でも警告が出ないように、一部の古い関数をセキュリティが強化されたバージョンに置き換えました。(_vsntprintf() → _vsntprintf_s() 等) |
2008/05/24:Ver1.01![]() (修正) LoadStr() で 128 バイト以上のリソース文字列を正しく取得できない不具合を修正しました。 |
・おもちゃ箱に戻る |
![]() (^^)/ |
![]() |