文件名创建 Ifstream 对象时出错

Error on filename creating Ifstream object

这会失败的任何特定原因?

    std::string r = "Hej.whatever";
    std::string const *p = &r;
    std::ifstream file ((*p).c_str(), std::ios::in, std::ios::ate);
    std::ifstream file ((*p), std::ios::in, std::ios::ate);
error: no matching function for call to
  ‘std::basic_ifstream<char>::basic_ifstream(const string&,
               const openmode&, const openmode&)’
  std::ifstream file ((*p), std::ios::in, std::ios::ate);

你需要通过按位或(|)传递几个模式:

std::ifstream file ((*p), std::ios::in | std::ios::ate);
std::ifstream file2 ((*p), std::ios::in | std::ios::ate);

你可以从第一次调用中删除 .c_str(),没有必要