没有匹配的函数 – 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这个事实并避免不必要的复制。