0

我有一个问题在 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 版本按预期工作......

4

1 回答 1

0

您包含ctype.h,该标头在全局命名空间中声明了一个函数tolower(这是 C 库的一部分,因此那里没有其他命名空间)。也许你的意思是包括cctype. 对于给定的 C 标准库头文件X.h,有一个 c++ 版本在命名空间cX内提供了一些相同的功能::std

于 2013-08-22T04:13:41.970 回答