我有以下场景,可以在Visual Linux10中运行,但不适用于C++上的GCC:
呼叫:
value& v;
wstring fn(L"");
char_conv::str_to_wstr( path, fn );
parse( v, ifstream( fn.c_str() ) ); //<-- ERROR
函数定义:
inline std::string parse(value& out, std::istream& is){...}
这是我得到的错误:
In member function ‘std::string PrintInvoker::extractParameter(const std::string&, picojson::value&)’:
error: no matching function for call to ‘std::basic_ifstream<char, std::char_traits<char> >::basic_ifstream(const wchar_t*)’
发布于 2015-10-23 20:32:55
std::idstream
具有以下构造函数:
basic_ifstream();
explicit basic_ifstream( const char* filename,
ios_base::openmode mode = ios_base::in );
explicit basic_ifstream( const string& filename,
ios_base::openmode mode = ios_base::in );
basic_ifstream( basic_ifstream&& other );
basic_ifstream( const basic_ifstream& rhs) = delete;
现在,当您调用返回wchar_t*
的fn.c_str()
时,因为fn
是一个wstrgin
。正如你所看到的,这里没有接受wchar_t*
的重载,所以编译器会给你一个错误。
看看我的MSVS2015副本,微软似乎添加了一个接受wchar_t*
的构造函数,这就是为什么它在那里工作的原因。
https://stackoverflow.com/questions/33302302
复制相似问题