【发布时间】:2016-12-04 22:20:58
【问题描述】:
我正在尝试使用 STL 函数 transform 将集合中的所有字符串转换为小写。但是我收到了 C2664 的错误。我想知道我的代码有什么问题?
set<string> mydoc;
mydoc.insert("ABCD");
transform(mydoc.begin(), mydoc.end(), mydoc.begin(), ::tolower);
copy(mydoc.begin(), mydoc.end(), output);
【问题讨论】:
-
tag info 解释得还不够好吗?
-
1.
set<string>的每个迭代器指的是什么类型(集合中存储了什么)? 2.tolower期望的类型是什么? -
@Pixelchemist 'ostream_iterator
output(cout, "\n");'是迭代器 -
@JoviZhihaoZhou:我的意思是在
transform声明中。迭代器(mydoc.begin()的结果)引用的类型是什么(不是迭代器类型本身)?当您迭代一组strings 时,它指的是std::string。因此,您尝试通过传递一个接受 character 而不是字符串参数的函数来转换一组字符串。 -
@Pixelchemist 知道了!解决了我的问题。
标签: c++ transform lowercase c2664