Форум программистов, компьютерный форум CyberForum.ru

Есть файл с данными . Как переписать эти данные в массив структур? - C++

Восстановить пароль Регистрация
 
 
Рейтинг: Рейтинг темы: голосов - 11, средняя оценка - 4.73
NNN7
7 / 7 / 3
Регистрация: 05.09.2013
Сообщений: 503
12.10.2013, 14:41     Есть файл с данными . Как переписать эти данные в массив структур? #1
Допустим есть файл 1.txt с данными:
123
789
456
733

Нужно из файла переписать данные в массив структур.
Например , есть такая структура:
C++
1
2
3
4
5
6
7
8
9
10
11
12
struct My
{int a;
 int b;
 int c;
 int d;
 }
int main()
{int n;
 cin>>n;
 My s=new My[n];
 
return 0;}
Получается в поле а должны быть данные из файла , которые находятся в 1-ом столбце 1,7,4,7
Помогите , пожалуйста , как это можно сделать ? Объясните , если можете , принцип записи .
Пока вообще не могу понять , как справиться с этой задачей.Как узнать , исходя из файла , сколько массивов структур будет ?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
12.10.2013, 14:41     Есть файл с данными . Как переписать эти данные в массив структур?
Посмотрите здесь:

C++ Как ввести данные в динамический массив структур?
Подскажите как записать массив структур в файл C++
Как объяснить в программе эти данные C++
C++ Выделить отдельные данные в файле и переписать в другой файл
C++ C++, переписать данные из файла в файл, отсортировав по фамилии и убыванию года рождения
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
12.10.2013, 17:34     Есть файл с данными . Как переписать эти данные в массив структур? #21
Файл не находит.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
NNN7
7 / 7 / 3
Регистрация: 05.09.2013
Сообщений: 503
12.10.2013, 17:43  [ТС]     Есть файл с данными . Как переписать эти данные в массив структур? #22
Цитата Сообщение от alsav22 Посмотреть сообщение
Файл не находит.
И что же делать в таком случае? Путь вроде правильно описан.В чём же тогда может быть проблема?
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
12.10.2013, 17:45     Есть файл с данными . Как переписать эти данные в массив структур? #23
Цитата Сообщение от NNN7 Посмотреть сообщение
Путь вроде правильно описан.В чём же тогда может быть проблема?
Может в том, что "вроде бы"?
NNN7
7 / 7 / 3
Регистрация: 05.09.2013
Сообщений: 503
12.10.2013, 17:47  [ТС]     Есть файл с данными . Как переписать эти данные в массив структур? #24
Цитата Сообщение от alsav22 Посмотреть сообщение
Может в том, что "вроде бы"?
Да не может быть , чтобы не правильно . Вот , на диске D , без всякой папки у меня хранится файл data.txt с данными

А Вы не пробовали у себя запустить ?
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
12.10.2013, 17:50     Есть файл с данными . Как переписать эти данные в массив структур? #25
Цитата Сообщение от NNN7 Посмотреть сообщение
А Вы не пробовали у себя запустить ?
Пробовал.
Миниатюры
Есть файл с данными . Как переписать эти данные в массив структур?  
NNN7
7 / 7 / 3
Регистрация: 05.09.2013
Сообщений: 503
12.10.2013, 17:56  [ТС]     Есть файл с данными . Как переписать эти данные в массив структур? #26
Цитата Сообщение от alsav22 Посмотреть сообщение
Пробовал.
И как результат ?

Добавлено через 2 минуты
Цитата Сообщение от alsav22 Посмотреть сообщение
Пробовал.
Так а что я делаю неправильно?

Добавлено через 3 минуты
Цитата Сообщение от alsav22 Посмотреть сообщение
Пробовал.
у Вас такие значения были в файле?
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
12.10.2013, 18:21     Есть файл с данными . Как переписать эти данные в массив структур? #27
Цитата Сообщение от NNN7 Посмотреть сообщение
у Вас такие значения были в файле?
...
1 2 3 4
5 6 7 8
9 1 2 3
5 6 7 8
NNN7
7 / 7 / 3
Регистрация: 05.09.2013
Сообщений: 503
12.10.2013, 18:23  [ТС]     Есть файл с данными . Как переписать эти данные в массив структур? #28
Цитата Сообщение от alsav22 Посмотреть сообщение
...
так в чём же ошибка открытия файла? помогите мне , пожалуйста
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
12.10.2013, 18:29     Есть файл с данными . Как переписать эти данные в массив структур? #29
Попробуйте в папку проекта файл поместить, и в коде измените:
C++
1
ifstream fin("data.txt");
Добавлено через 2 минуты
Если не сработает, то название измените на "1.txt", может у вас русская а в названии.
NNN7
7 / 7 / 3
Регистрация: 05.09.2013
Сообщений: 503
12.10.2013, 18:31  [ТС]     Есть файл с данными . Как переписать эти данные в массив структур? #30
Цитата Сообщение от alsav22 Посмотреть сообщение
Попробуйте в папку проекта файл поместить, и в коде измените:
C++
1
ifstream fin("data.txt");
Добавлено через 2 минуты
Если не сработает, название измените на "1.txt", может у вас русская а в названии.
поместил , изменил- всё тоже самое((
и на 1 уже поменял - не хочет (
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
12.10.2013, 18:39     Есть файл с данными . Как переписать эти данные в массив структур? #31
Цитата Сообщение от NNN7 Посмотреть сообщение
и на 1 уже поменял
Код выложите, который пробуете сейчас.

Добавлено через 29 секунд
Цитата Сообщение от NNN7 Посмотреть сообщение
поместил
Куда?

Добавлено через 41 секунду
Среда какая? ОС?
NNN7
7 / 7 / 3
Регистрация: 05.09.2013
Сообщений: 503
12.10.2013, 18:45  [ТС]     Есть файл с данными . Как переписать эти данные в массив структур? #32
Цитата Сообщение от alsav22 Посмотреть сообщение
Код выложите, который пробуете сейчас.

Добавлено через 29 секунд

Куда?

Добавлено через 41 секунду
Среда какая? ОС?
VS2008 , Windows 7 Профессиональная
Поместил в папку Visual Studio 2008/Projects/Project1/str - вот в папке st и хранятся все данные проекта

Вот код:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
#include "stdafx.h"
#include <iostream>
#include <conio.h>
#include <fstream>
#include <string>
using namespace std;
struct My
{
    int a;
    int b;
    int c;
    int d;
};
 
void Show(My *arr,int N);
void Show(My *arr,int N)
{
    for(int i=0;i<N;i++)
    {
        cout<<arr[i].a;
        cout<<arr[i].b;
        cout<<arr[i].c;
        cout<<arr[i].d;
        cout<<" ";
    }
}
int main()
{   
    ifstream fin("1.txt");
    string str;
    int N = 0;
    if (fin)
    {
        while (getline(fin, str)) ++N;  // N - количество строк (структур) в файле
        fin.clear();
        fin.seekg(0);
        My *arr = new My[N];
        for (int i = 0; i < N; ++i)
        {
            fin >> arr[i].a;
            fin >> arr[i].b;
            fin >> arr[i].c;
            fin >> arr[i].d;
        }
        
        Show(arr,N);
        fin.close();
    }
   else cout << "Error!" << endl;
    
    getch();
    return 0;
}
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
12.10.2013, 18:54     Есть файл с данными . Как переписать эти данные в массив структур? #33
Цитата Сообщение от NNN7 Посмотреть сообщение
Поместил в папку Visual Studio 2008/Projects/Project1/str - вот в папке st и хранятся все данные проекта
Файл с main() там? Раньше программы, где есть работа с файлами, писали?
NNN7
7 / 7 / 3
Регистрация: 05.09.2013
Сообщений: 503
12.10.2013, 18:59  [ТС]     Есть файл с данными . Как переписать эти данные в массив структур? #34
Цитата Сообщение от alsav22 Посмотреть сообщение
Файл с main() там? Раньше программы, где есть работа с файлами, писали?
файл с main() - то есть , файл str c расширением сpp? Да, там .
Да , писал , но не сложные- запись /вывод массивов , тоже через потоки
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
12.10.2013, 19:04     Есть файл с данными . Как переписать эти данные в массив структур? #35
В начале main() добавьте:
C++
1
ofstream fout("2.txt");
и посмотрите: файл появится в папке проекта.
NNN7
7 / 7 / 3
Регистрация: 05.09.2013
Сообщений: 503
12.10.2013, 19:10  [ТС]     Есть файл с данными . Как переписать эти данные в массив структур? #36
Цитата Сообщение от alsav22 Посмотреть сообщение
В начале main() добавьте:
C++
1
ofstream fout("2.txt");
и посмотрите: файл появится в папке проекта.
ну да , добавился этот файл в папке проекта
но дело это всё равно не поменяло(
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
12.10.2013, 19:16     Есть файл с данными . Как переписать эти данные в массив структур? #37
Цитата Сообщение от NNN7 Посмотреть сообщение
но дело это всё равно не поменяло(
Это понятно... В него данные из 1.txt перенесите, и название в коде измените на 2.txt, и это уберите ofstream fout("2.txt")
NNN7
7 / 7 / 3
Регистрация: 05.09.2013
Сообщений: 503
12.10.2013, 19:18  [ТС]     Есть файл с данными . Как переписать эти данные в массив структур? #38
Цитата Сообщение от alsav22 Посмотреть сообщение
Это понятно... В него данные из 1.txt перенесите, и название в коде измените на 2.txt, и это уберите ofstream fout("2.txt")
Вот я дурак то! Дело было в названии файла.Я назвал его 1.txt , а нужно было просто 1!
Мне стыдно.Очень.

Прошу Вас , можете ещё раз подробненько рассказать , как происходит считывание с файла , которое Вы написали .
ifstream fin("1.txt");
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
 string str;
    int N = 0;
    if (fin)
    {
        while (getline(fin, str)) ++N;  // N - количество строк (структур) в файле
        fin.clear();
        fin.seekg(0);
        My *arr = new My[N];
        for (int i = 0; i < N; ++i)
        {
            fin >> arr[i].a;
            fin >> arr[i].b;
            fin >> arr[i].c;
            fin >> arr[i].d;
        }
}
N-это у нас получается количество массивов ,но мне не понятно , как именно оно начисляется ?
и зачем нам нужно
C++
1
fin.clear();
можно ли обойтись без него?
И ещё , теперь все операции , которые я хочу делать со структурой - их нужно делать в операторе if(){} ?

Извините за такие вопросы , я , наверное , Вам уже надоел)
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
12.10.2013, 19:19     Есть файл с данными . Как переписать эти данные в массив структур? #39
Цитата Сообщение от NNN7 Посмотреть сообщение
Я назвал его 1.txt , а нужно было просто 1!
Про это поподробнее.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
12.10.2013, 19:30     Есть файл с данными . Как переписать эти данные в массив структур?
Еще ссылки по теме:

C++ Организация работы с данными (входные данные должны вводиться из файла, а выходные выводиться в файл)
Динамический массив структур. Почему данные доступны после выполнения операции delete [] C++
Как записать массив структур в файл C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
NNN7
7 / 7 / 3
Регистрация: 05.09.2013
Сообщений: 503
12.10.2013, 19:30  [ТС]     Есть файл с данными . Как переписать эти данные в массив структур? #40
Цитата Сообщение от alsav22 Посмотреть сообщение
Про это поподробнее.
Вот я писал
C++
1
ifstream fin("1.txt");
А файл у меня был назван не 1 , а 1.txt - вот в этом ошибка
тогда нужно было бы писать 1.txt.txt
Yandex
Объявления
12.10.2013, 19:30     Есть файл с данными . Как переписать эти данные в массив структур?
Ответ Создать тему
Опции темы

Текущее время: 21:36. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru