Создать 2 параллельных строковых массива из текстового файла, используя getline - PullRequest
0 голосов
/ 08 марта 2019

Для этой задачи я открываю текстовый файл и пытаюсь прочитать строки 1 и 3 в массив с именем front (с индексами 0 и 1 соответственно), а затем прочитать строки 2 и 4 в массив с именем back (по индексам 0 и 1 соответственно), но это не совсем так. Ничего не вводится в массивы, моя логика цикла должна быть отключена. Я хочу читать каждую строку как есть (с включенными пробелами) вплоть до символа новой строки. Любая помощь приветствуется.

void initialize(string front[], string back[], ifstream &inFile)
{
    string fileName = "DevDeck.txt";    //Filename
    string line;
    inFile.open(fileName); //Open filename

    if (!inFile)
    {
        cout << "Couldn't open the file" << endl;
        exit(1);
    }

    //Create the parallel arrays
    while (!inFile.eof())   
    {       
        for (int index = 0; index < 4; index++)
        {       
            getline(inFile, line); 
            front[index] = line; //Store in first array

            getline(inFile, line); 
            back[index] = line; //Store in second array
        }
    }

}

1 Ответ

1 голос
/ 08 марта 2019

Ваш цикл for (int index = 0; index < 4; index++) имеет неправильное условие, так как вам нужно всего 4 строки, но в каждом цикле вы получаете 2, поэтому сейчас вы получите 8 строк.

Я попытался запустить ваш код с таким изменением, как это:

int main()
{
    string front[2];
    string back[2];

    ifstream inFile;

    initialize(front, back, inFile);

    cout << front[0] << endl << back[0] << endl << front[1] << endl << back[1];

    return 0;
}

и у меня это отлично сработало. Показано:

line1
line2
line3
line4

Чтобы помочь вам в дальнейшем, вы должны предоставить файл DevDeck.txt и фрагмент кода, который вызывает эту функцию.

...