gpt4 book ai didi

c++ - for_each 实现与 tolower

转载 作者:行者123 更新时间:2023-11-28 03:08:47 24 4
gpt4 key购买 nike

我在实现 for_each 的使用时遇到了问题,我可以使用 for 循环完成工作,但是为了便于理解,我需要一些帮助来解释...到目前为止,我有以下功能......

void clean_entry(const string& orig, string& cleaned) {
size_t start = 0;
size_t end = 0;

while(!isalnum(orig[start]) && start < orig.length())
start++;
end = start;
while(isalnum(orig[end]) && end < orig.length())
end++;

cleaned = orig.substr(start,(end-start));
// I want to replace the following lines with a for_each loop
string::iterator iter;
for(iter = cleaned.begin(); iter != cleaned.end(); iter++)
*iter = tolower(*iter);
}

在我尝试为上述函数的最后三行代码实现 for_each 循环时,我尝试了以下代码,这给了我一个编译错误...

struct {
void operator()(string::iterator strIter) {
*strIter = tolower(*strIter);
}
} lower;
for_each(cleaned.begin(),cleaned.end(),lower);

最佳答案

std::for_each 将仿函数应用于给定范围内的每个元素。它将实际元素传递给您的仿函数(*it ),而不是迭代器本身。

在您的情况下,void operator()(string::iterator strIter) 应更改为 void operator()(string::value_type& character)

关于c++ - for_each 实现与 tolower,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19017472/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com