C++ 无法读取文件进行文件处理,请使用boost库获取文件路径 ifstream我的_文件; for(boost::filesystem::recursive_directory_iterator end,dir(“F:/mails”);dir!=end;++dir){ 如果(dir->path().extension()!=“.txt”) 继续; std::cout

C++ 无法读取文件进行文件处理,请使用boost库获取文件路径 ifstream我的_文件; for(boost::filesystem::recursive_directory_iterator end,dir(“F:/mails”);dir!=end;++dir){ 如果(dir->path().extension()!=“.txt”) 继续; std::cout,c++,boost,C++,Boost,只接受const char*作为路径名参数(和std::string自C++11以来)。因此,您应该使用C_str()或native()将路径对象转换为字符串: 我终于找到了解决办法 for (boost::filesystem::recursive_directory_iterator end, dir("F:/mails"); dir != end; ++dir ) { if (dir->path().extension() != ".txt") co

只接受
const char*
作为路径名参数(和
std::string
自C++11以来)。因此,您应该使用
C_str()
native()
将路径对象转换为字符串:


我终于找到了解决办法

for (boost::filesystem::recursive_directory_iterator end, dir("F:/mails");
     dir != end; ++dir
) {
    if (dir->path().extension() != ".txt")
        continue;
    ...
    my_file.open(dir->path.c_str()); // or better dir->path.native(), but this requires C++11
    ...
}
error at "my_file.open(*dir);"... maybe some casting issue.
error C2664: 'void std::basic_ifstream<char,std::char_traits<char>>::open(const char *,std::ios_base::open_mode)' : cannot convert argument 1 from 'boost::filesystem::directory_entry' to 'const wchar_t *'    
for (boost::filesystem::recursive_directory_iterator end, dir("F:/mails");
     dir != end; ++dir
) {
    if (dir->path().extension() != ".txt")
        continue;
    ...
    my_file.open(dir->path.c_str()); // or better dir->path.native(), but this requires C++11
    ...
}
my_file.open(boost::filesystem::canonical(*dir).string());