検索対象の文字が文字列中に何個存在するか調べるには?

解決


むう  2010-10-02 14:05:05  No: 71956  IP: 192.*.*.*

初めまして。

VC++2008にて作業をしていますが、
CString型の変数に保持されている文字列から特定の文字を検索し、
その文字がいくつあるかを調べるコードを作成したいのですが
どうやって組めばいいのかさっぱりわかりません。

例えば

CString str = "abcdefd"

と保持されているならば、
strの中に"d"が何個あるか検索をかけ、
2個ある事を知りたいのですが。。。

編集 削除
maru  2010-10-02 19:44:01  No: 71957  IP: 192.*.*.*

単純にカウントするんじゃだめぇ?

  size_t length = str.GetLength();
  int found(0);
  for (size_t count = 0; count < length; ++count)
  {
    if (str[count] == _T('d'))
    {
      ++found;
    }
  }
  cout << found;  // データを表示

編集 削除
ryo  2010-10-02 21:20:28  No: 71958  IP: 192.*.*.*

もうひとつ、CStringをつくっていいなら、
Removeで、「対象の文字」を消し、長さを比較する。

編集 削除
επιστημη  URL  2010-10-02 22:58:43  No: 71959  IP: 192.*.*.*

もいっちょ、STLに任す。

#include <afxwin.h>
#include <iostream>
#include <algorithm>

using namespace std;

int main() {
  CString str = "abcdefd";
  cout << count((const char*)str, (const char*)str+str.GetLength(), 'd') << endl;
}

編集 削除
むう  2010-10-06 13:38:44  No: 71960  IP: 192.*.*.*

お返事が遅くなり、大変申し訳ありません。

maruさんの回答をヒントに、なんとか組む事ができました!
ryoさん、επιστημηさんもありがとうございました。
今後同じような問題に引っかかった際の参考にさせていただきます!

編集 削除