错误:C2039:' iswspace' :不是' std'的成员,但是std :: isspace()编译得很好

时间:2015-12-03 15:08:18

标签: c++ visual-studio visual-studio-2008 compiler-errors

我在VS2008中遇到了这种奇怪的行为,我只需使用以下代码即可在一个新项目中重现:

#include <cctype>
using namespace std;
int main() {
    isspace(' ');
    iswspace(L' ');
    std::isspace(' ');
    std::iswspace(L' '); // <--- ONLY THIS LINE has error
    return 0;
}

std::isspaceiswspace不会导致编译错误,但std::iswspace()会出错。

我不明白为什么std::isspace()会成为std的成员,但std::iswspace()不是。{1}}。我怀疑这是符合标准的行为。

1 个答案:

答案 0 :(得分:2)

您需要#include <cwctype>

至于非标准版的工作原理,它们是旧版本。 <cctype>仅为ctype.h,其中包含较早版本的iswspace。请参见msdn:https://msdn.microsoft.com/en-us/library/y13z34da.aspx