CString共通メンバー関数の説明

9649 ワード

CStringは有用なデータ型です.これらはMFCの多くの操作を大幅に簡略化し、MFCは文字列操作を行う際に便利になり、CStringはヘッダファイルafxに位置する.h中.MFCによるプログラミングの場合,ダイアログボックスからGetWindowTextを用いて得られる文字列はCStringタイプ,CStringはMFCに属するクラスである.
CStringの共通メンバー関数の説明は次のとおりです.
1、CString::Find
                    ,   CString                              ;                -1。
    int Find( TCHAR ch ) const;     
    int Find( LPCTSTR lpszSub ) const;     
    int Find( TCHAR ch, int nStart ) const;     
    int Find( LPCTSTR pstr, int nStart ) const;  

ここで、nStart文字列で検索を開始する文字のインデックスは、0の場合は最初から検索を開始します.nStartが0でない場合、nStartの前にある文字は検索に含まれませんが、nStartの文字が含まれます.
    CString s( "abcdef" );   
    int n = s.Find( 'c' ); //    n = 2   
    int f = s.Find( "de" ) ; //    f = 3   
    CString str("The stars are aligned");   
    int n = str.Find('e',2); //   n = 2  

2、CString::Mid
 CString Mid( int nFirst, int nCount ) const;

このメンバー関数は、このCStringオブジェクトからnCount文字の長さのサブ列を抽出します.nFirstから(ゼロから始まるインデックス)指定された場所から開始します.この関数は、抽出された文字列のコピーを返します.空の可能性があります.nFirstこのCStringオブジェクトの抽出されるサブ列の最初の文字のゼロから始まるインデックスです.nCountは、このCStringオブジェクトから抽出される文字数を返します.このパラメータが指定されていない場合、文字列の残りの部分はすべてゼロから開始されます.抽出します.
    CString s( _T("abcdef") );   
    ASSERT( s.Mid( 2, 3 ) == _T("cde") );   
    CString strBuff(buff);    // buff char*    CString .   0,0,1,1,4  
    int pos1=0,pos2=0;  
    pos2 = strBuff.Find(",",pos1);  
    if (pos2==-1) return FAULSE;  
    m_screenmode.screen_info[j].x = atoi(strBuff.Mid(pos1,pos2-pos1));  

上のコードはFind()とMid()でカンマ間の内容を取得し,順に類推しpos 1とpos 2の値を変化させていくことで,各カンマ間の値をすべて取り出すことができる.
3、CString::Replace
  int Replace( TCHAR chOld, TCHAR chNew );
  int Replace( LPCTSTR lpszOld, LPCTSTR lpszNew );

置換後、文字列が増加または短縮される可能性があります.それはlpszNewとlpszOldの長さが等しい必要がないからである.両方のバージョン形式で、大文字と小文字を区別するマッチングが行われます.
4、CString::CompareNoCase関数の原型:
int CompareNoCase( LPCTSTR lpsz ) const;

戻り値:この関数は2つのCStringオブジェクトに対して行われ、内容が完全に一致している場合は0を返します.lpszより小さい場合は-1を返します.lpszより大きい場合は、1を返します.例えば、CompareNoCaseを用いてstrとlpszを比較することは、strとlpszの最初の異なる文字を大文字と小文字を区別することに等しい.strの文字がlpszより大きい場合、文字列strはlpszより大きく、1を返す.strの文字がlpszより小さい場合、文字列strはlpszより小さく、-1を返します.strがlpszと完全に一致すると、0の説明が返されます.このメンバー関数は、汎用テキスト関数を使用することによって_tcsicmpは、このCStringオブジェクトと別の文字列を比較します.この共通テキスト関数_tcsicmpはTCHARです.Hで定義された、コンパイル時に設定された文字に基づいて_stricmp,_wcsicmp、または_mbsicmp対応.これらの関数のそれぞれは、現在使用されているコード・ページに基づいて大文字と小文字を区別する比較を行い、フィールドの影響を受けません.Compareとの区別CompareNoCaseは大文字と小文字を区別しない比較であり、Compareは大文字と小文字を区別する比較である.例えば、strとlpszをCompareすることは、strとlpszの最初の異なる文字を区別することに等しい.strがlpszより大きい場合、文字列strはlpszより大きく、1を返す.strの文字がlpszより小さい場合、文字列strはlpszより小さく、-1を返します.strがlpszの内容と完全に一致すると0を返す
5、BOOL IsEmpty( ) const; テスト対象が空かどうか、空の場合はゼロ、空でない場合はゼロ以外の例を返します.
    csStr="abc";
    cout<//0;
    csStr.Empty();
    cout<//1;

6、Trim相関関数:Trim()メソッドとTrimStrat()メソッドとTrimEnd()メソッドの3つのメソッドは、文字列の先頭と末尾に表示される文字の一部を削除するために使用されます.Trim()は文字列の先頭と末尾に現れるスペースを削除し、削除の過程は外から内までであり、スペース以外の文字にぶつかるまでであるため、前後に何個の連続するスペースがあっても削除される.TrimStart()は、文字列の先頭のスペースのみを削除します.TrimEnd()は文字列の末尾のスペースのみを削除します.
この3つの関数に文字型配列のパラメータが付いている場合は、文字型配列に現れる任意の文字を削除します.のように
Trim("abcd".ToCharArray())

文字列の先頭および末尾に現れるaまたはbまたはcまたはd文字を削除し、削除の過程はaでもbでもcでもdでもない文字にぶつかるまで終了する.ここで最も誤解を招きやすいのは、削除したのは「abcd」文字列だと思っていることだ.次の例を示します.
string s = " from dual union all ";
s = s.Trim().TrimEnd("union all".ToCharArray());

上のsの最終結果は「from dual」だと思っている人もいるかもしれませんが、本当の結果は「from d」です.この書き方で実行される削除オブジェクトは、文字配列に現れる任意の文字であり、これらの文字がつながっている文字列ではないことに注意してください.
void TrimLeft( );
void TrimLeft( TCHAR chTarget );
void TrimLeft( LPCTSTR lpszTargets );

左から文字を削除し、削除された文字はchTargetまたはlpszTargetsと一致し、最初の一致しない文字まで削除します.
   csStr="aaabaacdef";
    csStr.TrimLeft('a');
    cout<//baacdef
    csStr="aaabaacdef";
    csStr.TrimLeft("ab");
    cout<//cdef
//        
void TrimRight( );
void TrimRight( TCHAR chTarget );
void TrimRight( LPCTSTR lpszTargets );

右から文字を削除し、削除された文字はchTargetまたはlpszTargetsと一致し、最初の一致しない文字まで削除します.
    csStr="abcdeaafaaa";
    csStr.TrimRight('a');
    cout<//abcdeaaf
    csStr="abcdeaafaaa";
    csStr.TrimRight("fa");
    cout<//abcde
    //        

7、void MakeLower( ); 大文字を小文字に変換する例:
    csStr="ABCDEF  123456";
    csStr.MakeLower();
    cout<//abcdef  123456

8、int ReverseFind( TCHAR ch ) const; 最初の一致を後から前に検索し、見つかったら下付きに戻ります.見つからない場合は-1例を返します.
    csStr="abba";
    cout<'a');        //3

9、int GetLength( ) const; 最後の空白文字を含まない文字列の長さを返します.
    csStr="ABCDEF  123456";
    printf("%d",csStr.GetLength());       //16

10、 int Replace( TCHAR chOld, TCHAR chNew ); 関数のプロトタイプ:
int Replace( LPCTSTR lpszOld, LPCTSTR lpszNew );

役割:文字列の置換例:
    csStr="abcdef";
    csStr.Replace('a','x');
    cout<//xbcdef
    csStr="abcdef";
    csStr.Replace("abc","xyz");
    cout<//xyzdef

関連説明:T("")はマクロで、彼の役割はあなたのプログラムにUnicode符号化をサポートさせることです.Windowsは2つの文字セットANSIとUNICコードを使用しています.前者は通常使用される単バイト方式ですが、中国語のような2バイト文字を処理するのは不便で、漢字の半分が発生しやすいです.後者は2バイト方式で、2バイト文字の処理が便利です.