Запись чисел из файла в массив типа int

592
13 октября 2017, 16:06

Встал перед вопросом, как считать числа из текстового файла напрямую в массив.

    ifstream in("input.txt");
    if (!in)
    {
        cout << "File not found" << endl;
        system("pause");
        return 1;
    }
    //сколько чисел в файле
    int count = 0;
    int temp;
    while (!in.eof())
    {
        in >> temp;
        count++;// счетчик числа чисел
    }

    in.seekg(0, ios::beg);
    in.clear();

    int count_space = 0;
    char symbol;
    while (!in.eof())
    {
        in.get(symbol);
        if (symbol == ' ') count_space++;
        if (symbol == '\n') break;
    }

Наваял пока только это, дальше ухожу в гору ошибок. Подскажите решение, если можно как-то проще решить эту задачу был бы рад узнать как. Числа могут быть представлены по разному: в одной строке, в нескольких строках, с кучей пробелов между ними(не знаю, как адаптировать свои условия к этому).

Answer 1

Где же у вас правильный вопрос?... В заголовке - числа из файла в массив. Я отвечаю на него.

Вам нужен именно массив в C'шном смысле? Или в C++'ном, где его с успехом заменяет вектор? :)

Проще всего, пожалуй, так:

vector<int> data;
...
int n;
while(in >> n) data.push_back(n);

А в тексте - уже говорите о символах. Вы уж определитесь...

И еще - проверять while(!in.eof()) - неверно, потому что флаг конца файла будет выставлен после неудачного чтения за концом файла, т.е. вы можете стоять на конце файла, но in.eof() вернет false.

Update

int n, count = 0;
while(in >> n) ++count;
in.clear();
in.seekg(0, ios::beg);
int * data = new int[count];
count = 0;
while(in >> n) data[count++] = n;
READ ALSO
Виртуальное наследование

Виртуальное наследование

Почему данный код не работает?

316
Передача файла в параметр функции,с++

Передача файла в параметр функции,с++

Как передать файл в функцию вроде разобралсяНо есть непонятные моменты

228
базовый адрес потока

базовый адрес потока

Добрый день! Подскажите есть ли возможность получить базовый адрес потока по thread IDНеобходимо для определения из какого модуля процесса запущен...

190
Opencv 3 C++, cоздать ROI в виде трапеции

Opencv 3 C++, cоздать ROI в виде трапеции

Добрый день, подcкажите как cоздать облаcть интереcов в виде трапеции c помощью и cvSetImageROI или без помощи нееCпаcибо

228