Last Updated 2004/03/19
Programming Tips Visual C++ MFC CString(文字列)  索 引 
文字数の取得
2004/03/19

CStringに格納されている文字列(全角半角が混在している)の文字数を取得するにはどうしたらよいか?
メンバ関数の GetLength() ではバイト数は取得できるが文字数は取得出来ない.

メンバ関数ではないが _tcsclen() を使用する.
_tcsclen() は全角半角 UNICODE を問わず文字数を取得可能である.

_MBCS が #define されていないと _tcsclen() は strlen に置き換えられる.
_tcsclen() の置き換えは以下のとおりである.

_UNICODE : _tcsclen() -> wcslen()
_MBCS    : _tcsclen() -> _mbslen()
なし     : _tcsclen() -> strlen()

プロジェクトの設定でプリプロセッサの定義に _MBCS や _UNICODE を追加すれば,希望の動作となってくれる.

_tcsclen() を使用するには CString は operator LPCTSTR() const が存在するので,以下でよい.

  CString s = "あい3えお";
  int Len = _tcsclen( s );


参照
前後のTips
文字数の取得

DSS ProgrammingTipsCGI Ver2.02