C++ Передача значений из файла в массив

192
29 мая 2018, 18:30

Хочу брать из файла числа и вписывать в элементы массива. Почему не работает? И как работает while (file >> k), while (file >> m), если я правильно написал и можно ли использовать разные перемненные или достаточно одной?

#include <iostream>
#include <fstream>
 using namespace std;
 int main()
{
ifstream file("f.txt");
ofstream fileout("g.txt");
int count = 0, m;
while (file >> m)
    count++;
if (count % 2 == 1)
{
    cout << "Ne 4etno. Input 4etno." << endl;
    system("pause");
    return 0;
}
int *a = new int[count];
int i = 0, k;
while (file >> k)
{
    file >> a[i];
    i++;
}
for (int j = 0; j <count; j++) {
    cout << a[j] << " ";
}
file.close();
fileout.close();
system("pause");
return 0;
}
Answer 1

Перемотайте файл на начало:

...
file.clear();
file.seekg(0);
int *a = new int[count];
int i = 0, k;
while (file >> k)
{
    a[i] = k; // !!
    i++;
}
...

N.B.

  1. Вы не закрываете файлы, когда выходите из функции при нечетном count.
  2. Вы ничего не пишете в ofstream.

Update

А, и если Вам надо считывать пары чисел, то:

while (file >> k && file >> m)
{
  ...
}
READ ALSO
Пользовательский класс string

Пользовательский класс string

Зависает программа после ввода строкиПодскажите в чем ошибка?

211
Процесс ест 50% ЦП- C++

Процесс ест 50% ЦП- C++

Как можно упростить/улучшить код, чтобы он не кушал ~50% ЦП? Вот, собственно, код:

183
Неизвестная проблема с boost::process C++

Неизвестная проблема с boost::process C++

возникла проблема с использованием boost, использую пример по туториалу с двуноправленным контейнером, но он почему-то отказывается работать

180