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

解決


むう  2010-10-02 23:05:05  No: 71956

初めまして。

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

例えば

CString str = "abcdefd"

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


maru  2010-10-03 04:44:01  No: 71957

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

  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-03 06:20:28  No: 71958

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


επιστημη  URL  2010-10-03 07:58:43  No: 71959

もいっちょ、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 22:38:44  No: 71960

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

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


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加