我在VS2008中遇到了这种奇怪的行为,我只需使用以下代码即可在一个新项目中重现:
#include <cctype>
using namespace std;
int main() {
isspace(' ');
iswspace(L' ');
std::isspace(' ');
std::iswspace(L' '); // <--- ONLY THIS LINE has error
return 0;
}
std::isspace
和iswspace
不会导致编译错误,但std::iswspace()
会出错。
我不明白为什么std::isspace()
会成为std的成员,但std::iswspace()
不是。{1}}。我怀疑这是符合标准的行为。
答案 0 :(得分:2)
您需要#include <cwctype>
。
至于非标准版的工作原理,它们是旧版本。 <cctype>
仅为ctype.h
,其中包含较早版本的iswspace
。请参见msdn:https://msdn.microsoft.com/en-us/library/y13z34da.aspx