我有一段下载的源代码,当尝试使用g ++编译器通过Cygwin进行编译时,编译器给出了一个错误,说明了'转换'函数在此范围内未声明...
我正在使用std命名空间,并且我有正确的标头。我不确定它为什么不编译..语法看起来正确
这是代码块部分。
string tolower (const string & s)
{
string d = s;
transform(d.begin(), d.end(), d.begin(), (int(*)(int)) tolower);
return d;
} // end of tolower
这是我的标题部分:
#include <fcntl.h>
#include <signal.h>
#include <sys/time.h>
#include <sys/socket.h>
#include <sys/types.h>
#include <sys/errno.h>
#include <arpa/inet.h>
#include <netinet/in.h>
#include <unistd.h>
// standard library includes ...
#include <string>
#include <list>
#include <map>
#include <set>
#include <vector>
#include <stdexcept>
#include <fstream>
#include <iostream>
#include <sstream>
#include <ios>
#include <iterator>
using namespace std;
答案 0 :(得分:5)
您需要为std::transform
添加相应的标头:
#include <algorithm>
您还应避免在标头中的全局命名空间中使用using namespace std;
,否则会污染包含头文件的任何代码的全局命名空间。