Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Amator
1043 / 375 / 9
Регистрация: 11.11.2008
Сообщений: 3,167
Завершенные тесты: 2
#1

Запись и чтение структур данных - C++

17.12.2012, 14:28. Просмотров 448. Ответов 6
Метки нет (Все метки)

Изучаю структуры данных в C++. Решил написать программу, которая просто получает данные для структуры и записывает структуру в файл txt.
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
// TestProject.cpp: определяет точку входа для консольного приложения.
//
 
#include "stdafx.h"
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
 
int _tmain(int argc, _TCHAR* argv[])
{
    struct test
    {
        int numb;
        string name;
        double mark;
    };
    test info;
    int n;
    string im;
    double oc;
    fstream f ("info.txt");
    cout << "Input Name: ";
    cin >> im;
    cout << "\nInput number: ";
    cin >> n;
    cout << "\nInput mark: ";
    cin >> oc;
    f << "Test line\n";
    info.mark = oc;
    info.name = im;
    info.numb = n;
 
    
    f.close();
 
    system("pause");
    return 0;
}
Правильно ли я делаю? И как нужно записывать стуктуру в файл, я пробовал по обычному f << info.mark << info.name << info.numb;, но среда на это ругается. Смотрел разные варианты в гугле, но то ли не понимаю как правильно применить, то ли еще что. И второй вопрос - что делать, если нужно допустим не одну запись обработать(под записью я понимаю набор данных из структуры для какого то человека/рассматриваемого объекта), а десяток или больше?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.12.2012, 14:28
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Запись и чтение структур данных (C++):

Clipboard (запись/чтение) массива структур - C++
Привет, форумчане! Прошу консультации по работе с буфером обмена Windows. Нужно корректно записывать/считывать массив структур...

Запись/чтение массива структур в бинарный файл - C++
#include &lt;iostream&gt; #include &lt;fstream&gt; using namespace std; struct test { int x; int y; };

Запись в бинарный файл и чтение из него массива структур - C++
Здравствуйте, появилась проблема записью структуры в бинарный файл и чтение из него этой же структуры. Я находил код с записью char, но я...

Запись в бинарный файл и чтение из него массива структур - C++
Ребята, выручайте. Огромная проблема с записью и с чтением структуры из бинарного файла. Помогите кто чем может. void bin_w() { int...

Запись/чтение структур (файлы) + разница между FILE * и <fstream> - C++
Всем привет. Порыскал по форуму, погуглил... Решения есть, но они не ясны (что, почему да как) и не все работают. Однако, я так и не нашёл...

Запись и чтение в файл массива структур в которую вложен вектор - C++
Здравствуйте! Подскажите как и можно ли вообще записать в один файл данную структуру: struct Xozorgan { char familia; char...

6
BumerangSP
4287 / 1409 / 121
Регистрация: 16.12.2010
Сообщений: 2,941
Записей в блоге: 3
17.12.2012, 15:27 #2
Оно?
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
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
 
  struct test
    {
        int numb;
        string name;
        double mark;
    };
 
int main()
{
    test info;
    ofstream f ("info.txt");
    cout << "Input Name: ";
    cin >> info.name;
    cout << "\nInput number: ";
    cin >> info.numb;
    cout << "\nInput mark: ";
    cin >> info.mark;
    f << "Test line\n";
    f<<info.mark<<'\n';
    f<<info.name<<'\n';
    f<<info.numb<<'\n';
    f.close();
    return 0;
 }
1
Amator
1043 / 375 / 9
Регистрация: 11.11.2008
Сообщений: 3,167
Завершенные тесты: 2
17.12.2012, 15:42  [ТС] #3
Да, работает. Я так понял, можно записывать только по одному элементу из структуры сразу?
И почему если я сразу писал три вывода, оно не работало? Считывать я так понимаю, можно точно также? И вопрос из первого сообщения
Цитата Сообщение от Amator Посмотреть сообщение
И второй вопрос - что делать, если нужно допустим не одну запись обработать(под записью я понимаю набор данных из структуры для какого то человека/рассматриваемого объекта), а десяток или больше?
. Если не сложно, был бы рад ответам
0
BumerangSP
4287 / 1409 / 121
Регистрация: 16.12.2010
Сообщений: 2,941
Записей в блоге: 3
17.12.2012, 16:04 #4
Цитата Сообщение от Amator Посмотреть сообщение
Я так понял, можно записывать только по одному элементу из структуры сразу?
Совсем не обязательно.
C++
1
f<<info.mark<<'\n'<<info.name<<'\n'<<info.numb<<'\n';
Вполне сработает. Главная проблема была в объявлении файла: fstream.
Нужно либо ifstream (чтение), либо ofstream (запись).

Второй вопрос не совсем понял. Если, например, есть массив структур, то его вполне можно записать в цикле.
1
Amator
1043 / 375 / 9
Регистрация: 11.11.2008
Сообщений: 3,167
Завершенные тесты: 2
17.12.2012, 16:46  [ТС] #5
Я на cplusplus.com читал, что fstream позволяет и читать и записывать. Или это не так?
Второй вопрос в том, что допустим у нас не один человек, а несколько(десятков), и для каждого из них нужно заполнить такие данные. Тогда нужно создавать массив типа(в данном случае) test и в ячейки массива записывать данные структуры? Или как?
0
BumerangSP
4287 / 1409 / 121
Регистрация: 16.12.2010
Сообщений: 2,941
Записей в блоге: 3
17.12.2012, 18:51 #6
Цитата Сообщение от Amator Посмотреть сообщение
fstream позволяет и читать и записывать.
Честно говоря, не проверял.


Цитата Сообщение от Amator Посмотреть сообщение
создавать массив типа(в данном случае) test и в ячейки массива записывать данные структуры
Ну, да:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
...
   test info[10];
    ofstream f ("info.txt");
    for (int i=0; i<10; i++)
    {
         cout << "Input Name: ";
        cin >> info[i].name;
        cout << "\nInput number: ";
        cin >> info[i].numb;
        cout << "\nInput mark: ";
        cin >> info[i].mark;
        f << "Test line\n";
        f<<info[i].mark<<'\n';
        f<<info[i].name<<'\n';
        f<<info[i].numb<<'\n';
    }
...
1
Amator
1043 / 375 / 9
Регистрация: 11.11.2008
Сообщений: 3,167
Завершенные тесты: 2
17.12.2012, 18:56  [ТС] #7
Вот на этой странице http://www.cplusplus.com/doc/tutorial/files/ (можно я её здесь оставлю?) есть таблица с двумя колонками: class и default mode parameter. Вот там я это и увидел. Буду теперь с чтением из файла разбираться.
1
17.12.2012, 18:56
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
17.12.2012, 18:56
Привет! Вот еще темы с ответами:

Запись данных в массив структур - C++
Нужно считать данные с клавиатуры и записать в массив структур. Где ошибка? Подскажите. #include &lt;stdio.h&gt; #include &lt;string.h&gt; ...

Чтение и запись данных в файл - C++
Срочно нужна программа Заданы два файла an_1.DAT и an_2.DAT напишите программу которая дописывает в первый числовые данные вводимые с...

Работа с файлами (запись/чтение данных из бд) - C++
Здравствуйте. Есть код(рабочий) #include &lt;conio.h&gt; #include &lt;iostream.h&gt; #include &lt;time.h&gt; #include &lt;string.h&gt; #include...

Чтение и запись блока данных в двоичном режиме - C++
// Чтение и запись блоков данных — использование read() и write(). #include &lt;iostream&gt; #include &lt;fstream&gt; #include &lt;windows.h&gt; ...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru