std :: wofstream :: open不能处理MAC / Xcode

时间:2016-03-03 13:32:39

标签: c++ xcode macos osx-yosemite

我使用宽字符串文件流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。

1 个答案:

答案 0 :(得分:1)

std::wofstream只是一个std::basic_ofstream,其模板类型为wchar_tstd::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::stringconst char*传递给open()

应该没有问题

我想指出,没有理由构造对象,然后调用open()。如果你想构造并打开一个文件,那么只需使用构造函数即可。

std::wofstream out;
out.open(filename, std::ios::binary);

变为

std::wofstream out(filename, std::ios::binary);