您好,我收到一个错误Error'unsigned int std::basic_string<char,std::char_traits<char>,std::allocator<char>>::find(_Elem,unsigned int) const' : cannot convert parameter 2 from 'bool (__cdecl *)(char)' to 'const std::basic_string<char,std::char_traits<char>,std::allocator<char>> &'
尝试编译此代码时,其目标是从 MyWords 列表中删除所有包含元音的单词,然后打印出没有元音的单词。
问问题
105 次
3 回答
2
std::string::find
将子字符串作为输入并返回第一个字符匹配的位置。
http://en.cppreference.com/w/cpp/string/basic_string/find
我不认为它可以直接应用在这里。
相反,请尝试:
bool vowelPresent = false;
for ( int i = 0; i < word1.size(); i++ )
if ( isVowel( word1[i] ) ) {
vowelPresent = true;
break;
}
if ( !vowelPresent ) {
cout << word1 << endl;
}
或者正如亚当建议的那样,您可以使用标题
std::find_if
中的功能。将 std::find_if 与 std::string 一起使用<algorithm>
于 2013-10-02T09:59:50.113 回答
1
这条线是问题所在:
if (word1.find(isVowel) != std::string::npos) {
您无法在string
. 我建议使用std::string::find_first_of
,像这样:
if (word1.find_first_of("aeiouAEIOU") != std::string::npos) {
使用您当前的方法,您可能正在考虑std::find_if
使用谓词函数。你会像这样使用它:
if (std::find_if(std::begin(word1), std::end(word1), isVowel) != std::end(word1) ) { // ...
于 2013-10-02T09:55:53.170 回答
0
如果您想isVowel
用作搜索谓词,则可以使用std::find_if
:http ://www.cplusplus.com/forum/beginner/393/
于 2013-10-02T09:58:19.877 回答