Код, который вы разместили, компилирует (с добавлением #include <string>
) штраф для меня с 32-битным компилятором VS 2008: Версия 15.00.21022.08
Итак, я предполагаю, что у вас есть что-то странное в пути включения, которое портит значение std::wstring
.
Мой путь включения имеет следующий вид:
C:\Program Files\Microsoft Visual Studio 9.0\VC\ATLMFC\INCLUDE
C:\Program Files\Microsoft Visual Studio 9.0\VC\INCLUDE
C:\Program Files\Microsoft SDKs\Windows\v6.0A\include
C:\Program Files\Microsoft Visual Studio .NET 2003\SDK\v1.1\include\
Попытайтесь сделать свой эквивалент и посмотреть, улучшит ли это вещи (на самом деле, необходима только вторая строка). Если так, то вы на пути к тому, чтобы что-то добавить обратно, пока оно снова не сломается, чтобы найти виновника.
Еще одна вещь, которая может помочь - внутри IDE, наведите курсор на символ wstring
правой кнопкой мыши и выберите «Перейти к объявлению». Среда IDE должна открыть заголовочный файл c:\Program Files\Microsoft Visual Studio 9.0\VC\include\xstring
в объявлении, которое выглядит примерно так:
typedef basic_string<wchar_t, char_traits<wchar_t>,
allocator<wchar_t> > wstring;
Если он приземлится где-то еще, это, вероятно, ваша проблема.
Вы можете сделать то же самое с символом String
в main()
, и среда IDE должна перейти к вашему typedef
.