Как открыть файл, используя строку из массива? - PullRequest
0 голосов
/ 06 ноября 2019

У меня есть массив имен файлов, которые мне нужно открыть. Когда я положу в планах. Это дает мне ошибку "нет соответствующей функции для вызова 'std :: basic_ifstream :: open (std :: __ cxx11: ..."

#include <iostream>
#include <fstream>
#include <cstring>
#include <string>

using namespace std;

int main(){
    ifstream files;
    ifstream plans;
    string stufiles[100];
    int numFiles,timeBlocks;
    files.open("filesToProcess.txt");
    if (files.fail()){ //checks to see if the selected store file opened
        cout << "Error when opening file!" << endl;
        return 0;
    }
    files >> numFiles;
    for (int i= 0; i<= numFiles; i++) {
         files >> stufiles[i];
    }
    files.close();
    cout << stufiles[0] << endl;
    plans.open(stufiles[0]);
    if (plans.fail()){ //checks to see if the selected store file opened
        cout << "Error when opening file!" << endl;
        return 0;
    }
}

Это должно открыть файл, используя имя файлав массиве. Это дает мне ошибку "нет соответствующей функции для вызова 'std :: basic_ifstream :: open (std :: __ cxx11: ..."

1 Ответ

0 голосов
/ 06 ноября 2019

Версия вашего компилятора std::ifstream::open() не поддерживает std::string в качестве входных данных, поэтому вам придется вместо этого указать const char*. Вы можете использовать std::string::c_str() для этого:

plans.open(stufiles[0].c_str());
...