我用C ++编写了一个使用boost :: variant的简单程序。程序代码如下所示。
#include <string>
#include <iostream>
#include <boost/variant.hpp>
int main (int argc, char** argv)
{
boost::variant<int, std::wstring> v;
v = 3;
std::cout << v << std::endl;
return 0;
}
但是当我尝试使用命令
编译它时g++ main.cpp -o main -lboost_system
我得到了
/usr/include/boost/variant/detail/variant_io.hpp:64: error: no match for ‘operator<<’ in ‘((const boost::detail::variant::printer<std::basic_ostream<char, std::char_traits<char> > >*)this)->boost::detail::variant::printer<std::basic_ostream<char, std::char_traits<char> > >::out_ << operand’
后面跟着一堆候选函数。
我缺少什么?有趣的是,当我使用std::string
代替std::wstring
时,一切都很有效。
提前致谢。
答案 0 :(得分:6)
问题是wstring
中的<<
不能cout
。请尝试使用wcout
。这不是变体的问题。
答案 1 :(得分:2)
使用wcout
,而不是cout
。因为您使用的是wstring
,而不是string
。
std::wcout << v << std::endl;
//^^^^ note