kzさん
> ・C++のTrim系関数は全角、半角関係なしにスペースを削除することを知らなかった
これは少々勘違いされているようです。 VisualStudioでは標準ライブラリ(STD)とは別にマイクロソフトが用意したMFCライブラリがございます。 MFCは画面制御からファイル読み書き、通信制御まで様々なクラスが用意されております。 その中で文字列を扱うクラスは以下となります。
文字列クラス STD:string MFC:CString
STEP_KはMFCライブラリで作られており文字列はほぼCStringで作っています。 ※stringでgrep検索すれば出て来るかも知れませんが。
よってTrim系関数は全てCStringで実装されているメソッド関数となります。
さらに補足するなら CStringは#defineで定義されたマクロとなっており 実際の本当のクラスはCStringAとCStringWになります。 Unicodeの定義有無でUnicodeの場合はCStringWクラスが使用されるように作られてます。 STEP_KはkobarinさんがUnicode対応されたわけですからUnicode側の文字列クラス、関数が使用されます。
またCStringTと言うのがありこれは確かC++テンプレートクラスだったかと思います。 マイクロソフトはATLと言う言い方をしています。 atlstr.hをインクルードするだけで使用出来るそうです。 MFCは使ってない、もしくは使いたくない状況だけどCStringが使いたい場合に重宝すると思います。
最後にマルチバイト文字(S-JIS)とUnicodeの切り替えはプロジェクトのプロパティにございます。
マルチバイトではこのようなコーディングですが CString strText = "ABC"; char cText[] = "ABC"; char val = 1;
Unicodeでは以下のようにコーディングしませんとエラーになります。 CString strText = L"ABC"; wchar_t cText[] = L"ABC"; char val = 1;//バイナリは関係ない
しかしマイクロソフトはどちらでもビルド出来るようにマクロを用意してくれてます。 CString strText = _T("ABC"); TCHAR cText[] = _T("ABC");
このようにコーディングする事でどちらでも大丈夫です。 基本は、文字列定義は_T("")で括る、CHARはTCHARにする。 その他C言語の標準文字列関数を使いたい場合、例えばstrcpyなど全てマクロ関数を使う※MSDNオンラインマニュアル参照 となります。 この辺りが参考になるかと・・・ http://www.02.246.ne.jp/~torutk/cxx/vc/misc_tchar.html
|