トップへ
<---   取り出しトピック   --->
 
. STEP Kに空白を入れたい&履歴を0にしたい kz 02/13木19:48#r238
. Re: STEP Kに空白を入れたい&履歴を0にしたい DJ TOYO 03/06金22:57#r242
. Re^2: STEP Kに空白を入れたい&履歴を0にしたい kz 03/08日23:33#r243
. Re^3: STEP Kに空白を入れたい&履歴を0にしたい DJxTOYO 03/11水22:39#r244
. Re^4: STEP Kに空白を入れたい&履歴を0にしたい kz 03/13金22:50#r245
. Re^5: STEP Kに空白を入れたい&履歴を0にしたい DJxTOYO 03/27金10:13#r247選択
. Re^6: STEP Kに空白を入れたい&履歴を0にしたい kz 04/19日20:35#r248
 

上の選択記事
. Re^5: STEP Kに空白を入れたい&履歴を0にしたい
     DJxTOYO 2020/03/27金10:13 #r247
編集&削除 返信  
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

上へ






RAIBPL1.23-wakatiai.halfmoon.jp 2020/07/06月15:19