在一组转换为小写 C++ 错误 C2664

in a set transform to lowcase c++ errorC2664

我正在尝试使用 STL 函数 transform 将集合中的所有字符串转换为小写。但是我得到了 C2664 的错误。我想知道我的代码有什么问题?

set<string> mydoc;
mydoc.insert("ABCD");
transform(mydoc.begin(), mydoc.end(), mydoc.begin(), ::tolower);
copy(mydoc.begin(), mydoc.end(), output);
  1. 您不能将 std::string 传递给 tolower
  2. C++11 set 迭代器是 const.

因此,在将每个 string 插入 set 时,您可能应该将 tolower 应用于每个 string 而不是事后更改它,因为您必须重新插入每个元素来浪费时间放入分类容器中。