хранить данные из файла в массивы с ++ - PullRequest
0 голосов
/ 07 марта 2019

У меня есть этот специальный код для чтения целых чисел из текстового файла:

#include <iostream>
#include <fstream>
#include <string>
#include <cstdlib>

using namespace std;

bool contains_number(const string &c);

int main()
{
    int from[50], to[50];
    int count = 0;
    {
        string line1[50];
        ifstream myfile("test.txt");

        int a = 0;

        if (!myfile)
        {
            cout << "Error opening output file" << endl;
        }

        while (!myfile.eof())
        { 
            getline(myfile, line1[a]);

            if (contains_number(line1[a]))
            {
                count += 1;
                myfile >> from[a];
                myfile >> to[a];

                //cout << "from:" << from[a] << "\n";
                //cout << "to:" << to[a] << "\n";
            }
        }   
    }    
    return 0;
}

bool contains_number(const string &c)
{   
    return (c.find_first_of("1:50") != string::npos);
}

Мне нужно хранить эти значения из [] и [] в 2 массивах, чтобы использовать их в другой функции. Я попытался создать 2 массива простым способом и повлиять на значения, например:

int x[], y[];
myfile >> from[a];
for(int i=0; i<50;i++)
{
    x[i] = from[i];
}

но это не работает. Похоже, что этот способ только для чтения и отображения, и значение из будет удалено, как только появится другое значение. Любая помощь?

Спасибо.

1 Ответ

0 голосов
/ 07 марта 2019

Вы не увеличиваете индекс массива a в цикле.Это приводит к тому, что line[0], to[0] и from[0] будут перезаписаны для каждой строки в файле, где contains_number возвращает true.

Нет причин для сохранения строк в памяти.Вы можете просто обрабатывать ваши строки по мере прохождения файла (т.е. создавать переменную string line в цикле while).

Убедитесь, что вы правильно закрыли дескриптор файла.

Помимо этоговы должны проверить границы индекса в цикле (a <50), иначе вы можете записывать границы вашего массива, если в вашем файле больше 50. </p>

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...