2009-09-17 7 views
9

Dostaję dość dziwny komunikat o błędzie podczas próby wcout do wstring w VC++ 2008 Express:Błąd C2679 przy próbie użycia std :: wytłumaczyć << wstring-var; VC++ 2008 Express

error C2679: binarny '< <': żaden operator znalezione, które zajmuje argument prawy typu "std :: wstring" (lub nie ma akceptowalnej konwersji)

Jeśli rozumiem to poprawnie, to zgłasza, że ​​wcout nie akceptuje ściągnięcia? Proszę kogoś, aby skompilował ten kod pod linuxem i działa dobrze. Próbowałem również ten sam kod na innym komputerze z vC++ 2008 express i nadal nie. Znany problem ze std w vC++ 2008?

#include <iostream> 

int main() 
{ 
std::wstring unicode_test = L"Unicode var"; 
std::wcout << L"Unicode non-var" << std::endl; 
std::wcout << unicode_test << std::endl; //<-- This line fails! 
} 

Używam vC++ 2008 express sp1 ze wszystkimi aktualizacjami do KB948127. Mam świadomość, że konsola będzie wymagać zmian strony kodowej, ale to nie jest nawet kompilacja. Dzięki.

Odpowiedz

12

Musisz #include <string>. Nie jestem pewien, co standard mówi, ale jestem całkiem pewien, że <iostream> nie jest wymagane do eksportu wszystkich <string>, jeśli w ogóle.

[edytuj] Przynajmniej cplusplus.com nie wymienia nawet string jako typów zadeklarowanych w <iostream>. Nie, to nie jest standard, Wiem ... [/ edit]

+0

Co za głupiec, że linia deklarująca "wstring" działa. W tym otrzymasz wystarczającą liczbę , aby móc ją zadeklarować, ale nie "operator <<' - po prostu wystarczająco pomocny, aby zranić, jak przypuszczam. –

Powiązane problemy