我在Cygwin上运行的G ++(gcc版本3.4.4)。
我不能得到的该小代码段进行编译。 我包括相应的头。
int main(){
std::string temp("asgfsgfafgwwffw");
std::transform(temp.begin(),
temp.end(),
temp.begin(),
std::toupper);
std::cout << "result:" << temp << std::endl;
return 0;
}
我还没有使用STL容器,如向量的任何问题。 没有人有任何建议或见解这种情况。 谢谢。
这说明它非常好。
这将归结为以下代码:
std::transform(temp.begin(),temp.end(),temp.begin(),static_cast<int (*)(int)>(std::toupper));
从上面的链接 。
#include <cctype> // for toupper #include <string> #include <algorithm> using namespace std; void main() { string s="hello"; transform(s.begin(), s.end(), s.begin(), toupper); }
可惜的是,上面的程序将无法编译,因为名称“TOUPPER”不明确。 它可以指到:
int std::toupper(int); // from <cctype>
要么
template <class chart> charT std::toupper(charT, const locale&);// from <locale>
使用显式类型转换来解决歧义:
std::transform(s.begin(), s.end(), s.begin(), (int(*)(int)) toupper);
这将指示编译器来选择合适的TOUPPER()。