CStringクラス
2013年5月23日:MFC
MFCでは文字列処理用のクラスCStringがあります。
CStringを使えば、文字列の制御を簡単におこなえて便利です。
CSringの使い方について解説します。
宣言
CStringの宣言は
CString ss;
といようにCSringをかくだけでOKです。文字列は
ss=”あいうえお”;
というように代入できます。文字列の連結は
ss=ss+”かきくけこ”;
とすることができます。
CStringクラスのメソッド
CStringで使用出来るメソッドを紹介します。
GetLength()
文字数を返します。文字列の長さはバイト数で返します。
よって、数字やアルファベットなら1、日本語だと2になります。
(例)「12あ」の場合は2+2=4となります。
IsEmpty()
文字列が空なら真を返します。
Empty()
長さ0の空文字列にします。
GetAt()
指定位置の文字を返します。
SetAt()
指定位置の文字を設定します。
Compare()
文字列を比較します。大文字と小文字を区別します。
int n=ss.Compare(ss2);
として、等しいときは0、ssが小さい時はn<0、ssが大きい時はn>0となります。
CompareNoCase()
文字列を比較しますが、大文字と小文字の区別をしません。
Format()
sprintf()のように文字列を生成します。
int n=10;
ss.Format(“n=%d”,n);
MakeUpper()
大文字に変換します。
MakeLower()
小文字に変換します。
MakeReverse()
文字を逆転します。
Trim()
両端の空白を削除します。
ss=” AA “;
ss.Trim();
とすれば、ss=”AA”となります。
TrimLeft()
先行空白を削除します。
TrimRight()
末尾空白を削除します。
Find()
文字列を検索します。
ss=”ABCDE”;
int n=ss.Find(“CD”);
とすればn=2となります。もし文字列がないと-1を返します。
ReverseFind()
文字列を終わりから先頭方向へ検索します。
GetBuffer()
CString内の文字へのポインタを返します。
CStringとchar*間の変換
CStringからchar*へ変換したい場合があります。その場合は、
CString str="file"; char *p=new char[str.GetLength()+1]; strcpy(p,str); delete[] p;
とします。逆にchar*からCStringへ変換する場合は
char test[5]="file"; CString str; str=test;
とします。
正数値かどうかを判断する
CStringが実数値かどうか判断する方法を紹介します。
以下にソースを載せます。
double tmp; CString ss="12.3"; tmp=atof((const char*)ss.GetBuffer(0)); if(tmp<=0){ //エラー return; }
atofは読み取れない場合は0を返します。
ですから、0以下の場合は負の数か読み取れない値となります。
これにより正数値かどうかを判断できます。
著者:安井 真人(やすい まさと)
@yasui_masatoさんをフォロー