2009-04-20 122 views
2

我在這裏太傻了,但我不能斷言會遍歷字符串時find_if得到函數簽名:使用std :: find_if用的std :: string

bool func(char); 

std::string str; 
std::find_if(str.begin(), str.end(), func)) 

在這種情況下谷歌已經不是我的朋友:(是有人在這裏?

+0

什麼問題? 「這裏有人嗎?」? – kim366 2017-04-02 19:02:37

回答

9
#include <iostream> 
#include <string> 
#include <algorithm> 

bool func(char c) { 
    return c == 'x'; 
} 

int main() { 
    std::string str ="abcxyz";; 
    std::string::iterator it = std::find_if(str.begin(), str.end(), func); 
    if (it != str.end()) { 
     std::cout << "found\n"; 
    } 
    else { 
     std::cout << "not found\n"; 
    } 
} 
+0

是的,知道我是愚蠢的,我有一個if語句中的find_if並且無法破譯錯誤信息,謝謝 – Patrick 2009-04-20 12:37:16

4

如果your're試圖找到一個的std :: string str內的單個字符c你大概可以使用std::find(),而不是std::find_if()。而且,實際上,您最好使用std::string的成員函數string::find()而不是來自<algorithm>的函數。

#include <iostream> 
#include <string> 
#include <algorithm> 

int main() 
{ 
    std::string str = "abcxyz"; 
    size_t n = str.find('c'); 
    if(std::npos == n) 
    cout << "Not found."; 
    else 
    cout << "Found at position " << n; 
    return 0; 
} 
+1

謝謝,但不是我正在嘗試做的:我正在重構一個isNumeric函數 – Patrick 2009-04-20 15:29:22

相關問題