我使用宽字符串文件流std :: wofstream打开文件并读取其内容。我使用了标题fstream。但是,当我在XCode 7上编译此代码时,它显示以下错误
No matching member function for call to 'open'
我的代码就像
header used <fstream>
std::wofstream out;
out.open(filename, std::ios::binary); <--- error
* filename is wide char string
注意:Visual Studio 2015正在使用Windows。
答案 0 :(得分:1)
std::wofstream
只是一个std::basic_ofstream
,其模板类型为wchar_t
。 std::basic_ofstream::open
每个标准有两个重载
void open( const char *filename,
ios_base::openmode mode = ios_base::out );
void open( const std::string &filename,
ios_base::openmode mode = ios_base::out );
正如您所看到的那样,两者都没有wchar_t*
或std::wstring
。我怀疑MSVS添加了一个重载来容纳open
使用宽字符串,其中xcode没有。
将std::string
或const char*
传递给open()
我想指出,没有理由构造对象,然后调用open()
。如果你想构造并打开一个文件,那么只需使用构造函数即可。
std::wofstream out;
out.open(filename, std::ios::binary);
变为
std::wofstream out(filename, std::ios::binary);