2012-06-10 35 views
0

我有下面的代碼:「查找」的字符等效功能*

char * word = "?www?eee"; 

我wanto,看看有多少「?」我有 。我知道「查找」函數適用於字符串,而不是char *。有沒有相當於char *?

謝謝。

+6

1.不要使用'字符*'除非interopping。 2.不要將字符串文字分配給'char *'。 –

+0

您可以輕鬆生成一個臨時字符串,並在此字符串上使用find。 –

回答

3

您可以使用std::count爲:

size_t howMany = std::count(word, 
          word + strlen(word), 
          '?'); 
7

您可以使用std::count

std::size_t result = std::count(word, word + strlen(word), '?'); 

如果你需要一個find功能用於其他目的,有std::find

-1

你也可以實現自己的find()-function

int find_char(char *str, char c) { 
    int count = 0; 
    for(int i = 0; str[i] != '\0'; i++) { 
     if(str[i] == c) { 
      count ++; 
     } 
    } 
    return count; 
} 
+0

您應該更喜歡使用現有的STL功能,而不是重新發明輪子。 – Node

+0

在'for'循環的條件下使用'strlen'會產生性能問題。我會寫'str [i]!='\ 0'',或者在循環之前將'strlen'的結果存儲到一個臨時變量中。 – buc

+1

@Node如果程序沒有使用STL,該怎麼辦?這是一個很好的可行的答案,與buc的附帶條件。 downvote有點苛刻。 – acraig5075