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 標準ライブラリの headerには、名前空間内で同じ機能の一部を提供X.hする c++ バージョンがあります。cX::std

于 2013-08-22T04:13:41.970 に答える