CStringクラス

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以下の場合は負の数か読み取れない値となります。

これにより正数値かどうかを判断できます。

著者:安井 真人(やすい まさと)