boost :: filesystem :: path和fopen()

当我尝试这样做时出现错误:

path p = "somepath"; FILE* file = fopen(p.c_str(), "r"); 

我得到:

types为“const boost :: filesystem :: path :: value_type *”的参数与“const char *”types的参数不兼容

谁能告诉我我做错了什么? 谢谢

如果你在Windows下,那value_typewchar_t ,并且在转换fopen (需要一个char* )时会失败。 根据文档,似乎你必须使用string()方法来获得一个带有默认代码转换器( wchar_t – > char )的标准字符串:

 FILE* file = fopen(p.string().c_str(), "r");