2009-04-20 18 views
2

は、私がここに愚かなことだが、私は、文字列の繰り返し処理を行う場合、find_ifしようとして述語のための関数シグニチャを取得することはできません。この場合使用してのstd :: find_if ::文字列

bool func(char); 

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

をGoogleは、実際には、your'reはおそらくstd::find()はなくstd::find_if()使用することができるのstd ::文字列str内の単一の文字cを見つけようとした場合

+0

質問は何ですか? 「誰ですか?」? – kim366

答えて

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

4

?私の友人:(ここで誰もがですされて。そして、していませんを使う方が良いでしょうのメンバ関数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

関連する問題