2012-08-28 3 views
0

Как написать вывод operator<<, если мой объект должен печатать std::wstring, а также int и т. Д.?Как печатать int в std :: wcerr?

#include <iostream> 

struct Foo { 
    int i; 
    std::wstring wstr; 
}; 

std::ostream& operator<<(std::ostream& out, Foo const& foo) { 
    out << foo.i << foo.wstr; // error                        
    return out; 
} 

int main() { 
    Foo foo; 
    std::wcerr << foo << std::endl; 
} 

Другими словами: Как я могу напечатать int с и другие типы данных, примитивным, если я прошел wcerr? Нужно ли мне boost::lexical_cast<std::wstring> или подобное?

ответ

1
#include <iostream> 

struct Foo { 
    int i; 
    std::wstring wstr; 
}; 

std::wostream& operator<<(std::wostream& out, Foo const& foo) { 
    out << foo.i << foo.wstr;                        
    return out; 
} 

int main() { 
    Foo foo; 
    std::wcerr << foo << std::endl; 
}