Нет соответствующей функции - ifstream open() - программирование

Нет соответствующей функции - 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.

Я закомментировал ошибки в приведенном выше коде. Ошибки:

no matching function for call 'std::basic_ifstream<char>::open(std::string&)
no matching function for call 'std::basic_ofstream<char>::open(std::string&)

В разных частях кода появляются ошибки типа numeric_limits is not a member of std или max() has not been declared, хотя они существуют в классе iostream и все работает в VS.


Почему я получаю эту ошибку?

4b9b3361

Ответ 1

Изменить на:

file.open(name.c_str());

или просто используйте конструктор, поскольку нет причины разделить конструкцию и открыть:

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

Поддержка std::string аргумента была добавлена ​​в С++ 11.

Поскольку loadNumbersFromFile() не изменяет свой аргумент pass std::string const&, чтобы документировать этот факт и избегать ненужной копии.