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

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

Войти
Регистрация
Восстановить пароль
 
outoftime
║XLR8║
510 / 432 / 33
Регистрация: 25.07.2009
Сообщений: 2,295
#1

Нужен иной метод чтения структуры из файла - C++

10.03.2010, 19:29. Просмотров 434. Ответов 1
Метки нет (Все метки)

Это то что у меня есть на данный момент, но судя по сегодняшней лекции нужно еще сделать тожесамое но уже читая не элементы структуры а весь обьект структуры, типа cin >> mas[i].name >> mas[i].hight; заменмть на cin >> mas[i]; Вот только проблема в том что я не понял как это сделать, а по форуму есть только тот вариант который у меня и так есть..

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
/*
    Кожен рядок файлу містить назву гірської вершини і її висоту. Використовуючи
    структуру для опису поняття вершина, одержати назву найвищої вершини за 
    даними файлу.
*/
 
#include <iostream>
#include <string>
#include <windows.h>
 
#define FOR(i,a,b) for (int i = (a), _n(b); i < _n; ++i)
 
using namespace std;
 
struct element
{
    string name;
    int hight;
};
 
int main()
{
    freopen("in.txt","r",stdin);
    int n;
    cin >> n;
    element *mas = new element[n];
    int max = -1, in;
    FOR(i,0,n)
    {
        cin >> mas[i].name >> mas[i].hight;
        if ( mas[i].hight > max ) { max = mas[i].hight; in = i; }
    }
    cout << mas[in].name << endl;
    Sleep(2000);
    return 0;   
}
Добавлено через 1 час 13 минут
В принцыпе была идея использовать fread() но она читает последовальный блок, а так как названия вершин у меня имеют разные длины строк я не пойму как это можно осуществить..

Добавлено через 1 час 39 минут
вот что у меня вышло:
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
#include <iostream>
#include <fstream>
#include <string>
#include <windows.h>
 
using namespace std;
 
struct element
{
    string name;
    int height;
    friend istream &operator >> (istream &in, element &obj)
    {
        in >> obj.name >> obj.height;
        return in;
    }
};
 
int main()
{
    ifstream file;
    file.exceptions ( ifstream::eofbit | ifstream::failbit | ifstream::badbit );
    int n, i = 0, in, max = -(1<<25);
    element *mas;
    try 
    {
        file.open ("in.txt", ifstream::in);
        file >> n;
        mas = new element[n];
        while (n--)
        {
             file >> mas[i++];
             if (max < mas[i-1].height) { max = mas[i-1].height; in = i-1; }
        }
        cout << mas[in].name << endl;
    }
    catch (ifstream::failure e)
    {
        cout << "Exception opening/reading file";
    }
    file.close();
    system("pause");
}
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.03.2010, 19:29
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Нужен иной метод чтения структуры из файла (C++):

Выделение динамической памяти для чтения каждой структуры из файла - C++
Здравствуйте! Никак не получается выделить динамическую память под каждую структуру из файла, учитывая, что я не знаю сколько структур в...

Нужен пример кода чтения из файла, сравнение и функция рандом - C++
Нужен пример кода -Открываем файл -Считываем содержимое(будет 4 числа) -Очищаем файл -Записываем в файл 4 случайных числа...

Каким образом после чтения из файла, узнать позицию для чтения следующего куска байт - C++
Здравствуйте, задача такова есть файл, размером 1000 байт, нужно открыть его считать 100 байт, после чтения закрыть. Потом опять открыть...

Чтения структуры из файла (описать структуру с именем "ORDER": "счет плательщика"; "счет получателя"; "сумма, переводится банковской операцией") - C++
Описать структуру с именем &quot;ORDER&quot;, содержащий следующие поля: &quot;Счет плательщика&quot;; &quot;Счет получателя&quot;; &quot;Сумма, переводится банковской...

Исследование структуры FILE или: что вообще можно выудить из этой структуры, указатель на которую мы получаем при открытии файла? - C++
Ничего нельзя. Итак, новичкам напомню, что после выполнения кода FILE* f= fopen (&quot;file.txt&quot;, &quot;w&quot;); в переменной f содержится...

Кодировка чтения файла - C++
Здравствуйте, форумчане! Возникла небольшая прроблемка.. Читаю данные из файла: #include &lt;iostream&gt; #include &lt;vector&gt; ...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
niXman
Эксперт C++
3135 / 1447 / 49
Регистрация: 09.08.2009
Сообщений: 3,441
Записей в блоге: 2
10.03.2010, 20:29 #2
для строки, записываешь ее длину(включая завершающийся нуль), потом саму строку(с нулем).
читаешь в обратном порядке.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
10.03.2010, 20:29
Привет! Вот еще темы с ответами:

ошибка чтения из файла - C++
задача такая: нужно считать из файла текст. написал программу, но она считывает только одну строку, т.е. до \n. Как написать, чтобы...

Программа чтения из файла - C++
Подскажите пожалуйста возможный алгоритм решения задачи: Таблица произвольной структуры в файле (база данных). Колонки таблицы...

Функция чтения из файла - C++
Написал программу которая в зависимости от выбора пункта меню, записывает данные в файл или читает их. Все было нормально пока не дошел...

Ошибка чтения из файла - C++
Народ, помогите понять, почему программа выдает ошибку при чтении из файла Входные данные: 6 2 3 -1 3 5 -2 -5 -1 9 -4 5 -1 -2 -2...


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

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

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