C ++ читает два входных файла по-разному - PullRequest
1 голос
/ 14 февраля 2012

У меня есть два файла, перечисленных в «input.txt», я могу прочитать в первом, используя:

while (getline(inFile, name))
{
    datFile.open(name, ifstream::in);
    ...
}

Но когда он дойдет до конца обработки datFile, он вернется и попытаетсяоткрыть другой файл (второй файл, указанный в файле «input.txt», который я не хочу обрабатывать аналогичным образом. Как я могу открыть второй файл и обработать его иначе, чем первый?

Спасибо.

Ответы [ 3 ]

2 голосов
/ 14 февраля 2012

Если в вашем файле input.txt (inFile) гарантированно есть два файла, выведите getline из цикла while ... вызовите его один раз, чтобы получить первый файл, обработайте его, затем вызовите его снова и обработайте второй файл после первого.

В качестве альтернативы, вы можете использовать break для выхода из цикла while, как только datFile завершит обработку ... но это не так логично.

1 голос
/ 14 февраля 2012

У вас должно быть три ifstream объекта;

std::ifstream inFile("input.txt");
std::ifstream file1;
std::ifstream file2;

std::string fileName1, fileName2;
getline(inFile, fileName1);
getline(inFile, fileName2);

file1.open(fileName1, open as you ilke);
file2.open(fileName2, open as you like);

process both files independently.

В качестве альтернативы, если держать файл открытым нежелательно, перепишите последние три строки следующим образом:

file1.open(fileName1, open as you ilke);
process file1;
file1.close();   

file2.open(fileName2, open as you like);
process file2;
file2.close();   

Во второйВ сценарии вы можете использовать тот же объект ifstream.

1 голос
/ 14 февраля 2012

Может быть что-то вроде:

int idx = 0;
while (getline(inFile, name))
{
    if (idx == 0)
    {
       datFile.open(name, ifstream::in);
       ...
    } else
    {
       ...
    }
    idx++;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...