首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >std::wofstream::open在MAC/Xcode上不起作用

std::wofstream::open在MAC/Xcode上不起作用
EN

Stack Overflow用户
提问于 2016-03-03 21:32:39
回答 1查看 364关注 0票数 1

我使用宽字符串文件流std::wofstream打开一个文件并读取其内容。我使用了头文件fstream。但是当我在XCode 7上编译这段代码时,它显示以下错误

代码语言:javascript
复制
No matching member function for call to 'open'

我的代码是这样的

代码语言:javascript
复制
header used <fstream>

std::wofstream out;
out.open(filename, std::ios::binary); <--- error
* filename is wide char string

注意:它与Visual Studio 2015一起在windows上工作得很好。

EN

回答 1

Stack Overflow用户

发布于 2016-03-03 21:37:11

std::wofstream只是一个模板类型为wchar_tstd::basic_ofstream。对于每个标准,std::basic_ofstream::open有两个重载

代码语言:javascript
复制
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()。如果你想构造并打开一个文件,那么只需使用构造函数就可以了。

代码语言:javascript
复制
std::wofstream out;
out.open(filename, std::ios::binary);

变成了

代码语言:javascript
复制
std::wofstream out(filename, std::ios::binary);
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35773613

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档