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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 13, средняя оценка - 4.85
Roma4717
0 / 0 / 0
Регистрация: 12.02.2013
Сообщений: 22
#1

Вывод на экран полей структуры - C++

21.04.2013, 17:13. Просмотров 1787. Ответов 5
Метки нет (Все метки)

есть структура и функция которая считывает данные из файла и заносит в структуру, но структура передается в функцию через вектор и вывод : cout<< str1.fio; не прокатывает пишет identifier "str1" is undefined. Подскажите пожалуйста как в таком случае вывести поля структуры??
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
typedef struct 
    {
    string fio;
    string nomer;
    string date1;
    string date2;
    int debt,ought;
    } client;
bool Read_input1 (wchar_t* filename, vector <client>&w_client)
    {    
    fstream f1;
    f1.open(filename, ios::in);
    if (!f1.is_open())
    return false;
    while (!f1.eof())
    {
    client str1;
    f1>>str1.fio>>str1.nomer>>str1.date1>>str1.date2>>str1.debt>>str1.ought;
    if (!str1.fio.empty())
        w_client.push_back(str1);
    }
    return true;
        }
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
21.04.2013, 17:13     Вывод на экран полей структуры
Посмотрите здесь:

Вывод в цикле структуры (структура имеет много полей данных) - C++
Приветствую ))) Подскажите пожалуйста, как бы вы решили данную проблему. Имеется структура данных. Она содержит 30 полей данных. ...

Вывод структуры на экран из файла - C++
Помогите пожалуйста, нужно сделать вывод структуры из текстового файла с наибольшим критерием &quot;Значение итога работы&quot;. Вот данная...

Сортировка структуры и вывод названия на экран - C++
У нас в учебном заведение идет практика по C++ первые 3 задания я сам сделал, а вот с 4 мучаюсь, так как нам подсунули учительницу которая...

Структуры, нумерация полей структуры - C++
Добрый день, у меня есть задачка, она решена. Но меня попросили &quot;предусмотреть нумерацию полей структуры, например 1)Имя:Петр и тд.&quot;....

Вывод на экран "структуры" - C++
Здравствуйте, Друзья. Вот код: #include &lt;iostream&gt; #include &lt;conio.h&gt; #include &lt;string.h&gt; #include &lt;stdio.h&gt; using namespace...

Вывод структуры, строка как элемент структуры - C++
Описать структуру с именем TRAIN, содержащую следующие поля: □ название пункта назначения; □ номер поезда; □ время отправления. ...

Смещение полей структуры - C++
Как можно узнать смещение поля структуры относительно адреса структуры? Если просто сложить размеры предыдущих элементов, то результат...

Заполнение полей структуры - C++
Подскажите, в чем ошибка. #include &quot;stdafx.h&quot; #include &lt;stdio.h&gt; struct sign { char Lastname; char Firstname; char...

Заполнение полей структуры - C++
Нужна ваша помощь! Нужно считать файл и записать в массив. Потом из этого массива надо раскидать значения по полям структуры. Как это...

Изменить одно из полей структуры - C++
Пользователь вводит с клавиатуры день рождения(напр 15) Внутри структуры изменить 15 на 1.И далее вывести на экран.

Расположение полей структуры в памяти - C++
Нифига себе на что плюсы способны... #include &quot;stdafx.h&quot; #include &lt;time.h&gt; #include &lt;stdlib.h&gt; #include &lt;iostream&gt; using...


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
hoob
19 / 11 / 1
Регистрация: 04.11.2012
Сообщений: 89
Записей в блоге: 1
21.04.2013, 17:25     Вывод на экран полей структуры #2
Вообще, мне кажется, что стоит переопределить оператор >>, так будет правильнее
Roma4717
0 / 0 / 0
Регистрация: 12.02.2013
Сообщений: 22
23.04.2013, 01:01  [ТС]     Вывод на экран полей структуры #3
пытался вывести на экран поля структуры вот таким образом :
C++
1
2
for (vector<client>::iterator it =w_client.begin() ; it!=w_client.end() ; ++it)
cout<<*it;
ругается на треуг. скобки влево пишет что : Error 1 binary '<<' : no operator found which takes a right-hand operand of type 'client' (or there is no acceptable conversion)
что делать с этим ? уже долго бьюсь не могу найти решение
hoob
19 / 11 / 1
Регистрация: 04.11.2012
Сообщений: 89
Записей в блоге: 1
23.04.2013, 03:47     Вывод на экран полей структуры #4
Цитата Сообщение от Roma4717 Посмотреть сообщение
пытался вывести на экран поля структуры вот таким образом :
C++
1
2
for (vector<client>::iterator it =w_client.begin() ; it!=w_client.end() ; ++it)
cout<<*it;
ругается на треуг. скобки влево пишет что : Error 1 binary '<<' : no operator found which takes a right-hand operand of type 'client' (or there is no acceptable conversion)
что делать с этим ? уже долго бьюсь не могу найти решение
Переопределять оператор вывода <<

Добавлено через 2 минуты
C++
1
2
3
4
5
6
7
8
9
10
11
ofstream &operator <<(ofstream &stream, const client &cN)
{
    stream << cN.fio;
    stream << cN.nomer;
    stream << cN.date1;
    stream << date1;
    stream << date2;
    stream << debt;
    stream << ought;
    return stream;
}
Добавлено через 9 минут
Так стоит его переопределить для записи экземпляра класса client в файл :
C++
1
2
3
4
5
6
7
8
9
10
ofstream &operator <<(ofstream &stream, const client &cN)
{
    stream << cN.fio;
    stream << cN.nomer;
    stream << cN.date1;
    stream << cN.date2;
    stream << cN.debt;
    stream << cN.ought;
    return stream;
}
А так для считывания из файла:

C++
1
2
3
4
5
6
7
8
9
10
ofstream &operator >>(ofstream &stream, const client &cN)
{
    stream >> cN.fio;
    stream >> cN.nomer;
    stream >> cN.date1;
    stream >> cN.date2;
    stream >> cN.debt;
    stream >> cN.ought;
    return stream;
}

Теперь считывать можно примерно так:
C++
1
2
client *tmp = new client();
        outStream >> *client;
Ну а дальше выводите как вам угодно. Если все это дело в векторе храните, то примерно так:
C++
1
2
3
4
5
6
7
8
9
10
for(unsigned int i=0; i< vectorClient.size(); i++){
    cout << "Client #" << i << endl;
    cout << vectorClient.at(i).fio << endl;
    cout << vectorClient.at(i).nomer << endl;
    cout << vectorClient.at(i).date1 << endl;
    cout << vectorClient.at(i).date2 << endl;
    cout << vectorClient.at(i).debt << endl; 
    cout << vectorClient.at(i).ought << endl;
    cout <<"------------------------" << endl;
}
Tulosba
:)
Эксперт С++
4392 / 3235 / 297
Регистрация: 19.02.2013
Сообщений: 9,045
23.04.2013, 08:19     Вывод на экран полей структуры #5
hoob, а знаете зачем ссылка на поток возвращается? Чтобы писать в одну строчку можно было:
C++
1
2
3
4
5
ofstream& operator <<(ofstream& stream, const client& cN)
{
    stream << cN.fio << cN.nomer << cN.date1 << date1 << date2 << debt << ought;
    return stream;
}
Roma4717
0 / 0 / 0
Регистрация: 12.02.2013
Сообщений: 22
23.04.2013, 22:54  [ТС]     Вывод на экран полей структуры #6
hoob, спасибо большое ,помогли очень, буду разбираться!!
Yandex
Объявления
23.04.2013, 22:54     Вывод на экран полей структуры
Ответ Создать тему
Опции темы

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