没有匹配的函数 – ifstream open()

这是错误代码的一部分:

std::vector<int> loadNumbersFromFile(std::string name) { std::vector<int> numbers; std::ifstream file; file.open(name); // the error is here if(!file) { std::cout << "\nError\n\n"; exit(EXIT_FAILURE); } int current; while(file >> current) { numbers.push_back(current); file.ignore(std::numeric_limits<std::streamsize>::max(), '\n'); } return numbers; } 

而且,我也不知道发生了什么。 整个事情编译在VS. 不过,我需要用dev cpp编译这个。

我在上面的代码中注释掉了错误。 错误是:

没有匹配的函数调用“std :: basic_ifstream :: open(std :: string&)
没有匹配函数调用'std :: basic_ofstream :: open(std :: string&)


在代码的不同部分,我得到像'numeric_limits不是std'的成员,或者'max()没有被声明'的错误,虽然它们存在于iostream类中,一切都在VS中工作。


为什么我得到这个错误?

改成:

 file.open(name.c_str()); 

或者只是使用构造函数,因为没有理由分离构造和打开:

 std::ifstream file(name.c_str()); 

在c ++ 11中添加了对std::string参数的支持。

由于loadNumbersFromFile()不修改它的参数通过std::string const&来logging这个事实并避免不必要的复制。