我有一个问题,在XCode中没有重现(甚至没有警告),但允许我在Keil MDK中编译。
void grammar::parse(std::string &_expr) {
std::transform(_expr.begin(), _expr.end(), _expr.begin(), std::tolower);
_expr.erase(std::remove_if(_expr.begin(), _expr.end(), std::isspace), _expr.end());
}
这就是我得到的
错误:#304:没有重载函数“std :: transform”的实例与参数列表匹配 错误:#304:没有函数模板“std :: remove_if”的实例与参数列表匹配
标题包括:
#include <iostream>
#include <sstream>
#include <iomanip>
#include <cmath>
#include <stdlib.h>
#include <math.h>
#include <ctype.h>
#include <stdio.h>
#include <algorithm>
你能告诉我在哪里看吗?我很惊讶XCode版本按预期工作......
答案 0 :(得分:0)
您包含ctype.h
,该标头在全局命名空间中声明了一个函数tolower
(这是C库的一部分,所以那里没有其他命名空间)。也许你打算包括cctype
。对于给定的C标准库头X.h
,有一个c ++版本cX
,它在::std
命名空间内提供了一些相同的功能。