У меня есть вектор строк 2 имен папок vector <myClass> vec_fileNames;
, которые я заполнял чтением из fileNames.txt
, который содержит 2 строки:C++: Использование цикла для открытия файлов
Первый
Второй
ifstream inFile("c:/file names.txt");
if(!inFile)
{
cout << "File Not Found!\n";
inFile.close();
}
else
{
string line;
myClass class;
while (getline(inFile, line))
{
class.setFileName(line);
vec_fileNames.push_back(class);
}
Таким образом, в этот момент мой vec_fileName[0].getFileName
= Первая и vec_fileName[1].getFileName
= второй
Теперь я хотел открыть файлы внутри папки, кто имена в векторе в цикле, так что я сделал это:
for(int i = 0; i < vec_fileNames.size(); i++)
{
string fileName = vec_fileNames[i].getFileName();
ifstream inFile("C:/Program Folder\\" + fileName + "goalFile.txt");
if(!inFile)
{
cout << "File Not Found!\n";
inFile.close();
}
else
{
while (getline(inFile, line))
{
//do something
}
}
До сих пор все, что хорошо для файла не открыт, за исключением. Это даже то, что можно сделать в C++ или есть ошибка в том, как я открываю файл?
Почему вы всегда используете 'vec_fileNames [0]'? Разве это не 'vec_fileNames [i]'? – MikeCAT
Похоже, вы используете это на окнах. Не будет ли ваша строка '' C: \ Program Folder \\ "+ fileName +" goalFile.txt "' int this case? –
Рассмотрите возможность использования диапазона, основанного на цикле, - это настолько читаемо и позволяет избежать ошибок, например, всегда обращаться к одному и тому же индексу '[0]', когда ему действительно нужен текущий элемент. –