我有下面的代碼:「查找」的字符等效功能*
char * word = "?www?eee";
我wanto,看看有多少「?」我有 。我知道「查找」函數適用於字符串,而不是char *。有沒有相當於char *?
謝謝。
我有下面的代碼:「查找」的字符等效功能*
char * word = "?www?eee";
我wanto,看看有多少「?」我有 。我知道「查找」函數適用於字符串,而不是char *。有沒有相當於char *?
謝謝。
您可以使用std::count
爲:
size_t howMany = std::count(word,
word + strlen(word),
'?');
您可以使用std::count
:
std::size_t result = std::count(word, word + strlen(word), '?');
如果你需要一個find
功能用於其他目的,有std::find
。
你也可以實現自己的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;
}
您應該更喜歡使用現有的STL功能,而不是重新發明輪子。 – Node
在'for'循環的條件下使用'strlen'會產生性能問題。我會寫'str [i]!='\ 0'',或者在循環之前將'strlen'的結果存儲到一個臨時變量中。 – buc
@Node如果程序沒有使用STL,該怎麼辦?這是一個很好的可行的答案,與buc的附帶條件。 downvote有點苛刻。 – acraig5075
1.不要使用'字符*'除非interopping。 2.不要將字符串文字分配給'char *'。 –
您可以輕鬆生成一個臨時字符串,並在此字符串上使用find。 –