2015-12-03 3 views
1

Я столкнулся с этим странным поведением в VS2008, который я могу воспроизвести в новом проекте только с этим кодом:error: C2039: 'iswspace': не является членом 'std', но std :: isspace() компилирует отлично

#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() - нет. Я сомневаюсь, что это поведение, совместимое со стандартами.

+0

Я думаю, вам нужно #include

+0

@AndyM Спасибо! Можете ли вы опубликовать его в качестве ответа? Также вы знаете, почему 'iswspace()' без 'std ::' действительно работал? – sashoalm

ответ

1

Вам необходимо #include <cwctype>.

Что касается того, почему работают нестандартные, это более старые версии. <cctype> - это всего лишь ctype.h, у которого более старая версия iswspace. См. Msdn: https://msdn.microsoft.com/en-us/library/y13z34da.aspx

Смежные вопросы