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

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

Войти
Регистрация
Восстановить пароль
 
Alisson
1 / 1 / 0
Регистрация: 10.01.2011
Сообщений: 30
#1

вывод тип int в файл, система ввода/вывода - C++

30.06.2011, 00:52. Просмотров 318. Ответов 0
Метки нет (Все метки)

Уважаемые форумчане, помогите пожалуйста! У меня есть задание: создать базу данных студентов, вывести на консоль, записать данные в файл. В общем, работа на ввод-вывод, всё работает, кроме одного момента! В созданном файле, куда должны записываться данные о студентах, поля типа "char"(имя, фамилие) записываются нормально, а вот вместо полей типа "int"(курс, номер студ. билета) какие-то иероглифы (( Пишу в VisualStudio2008. Нужно ли как-то преобразовывать int в char при записи в файл? Или в чём может быть проблема? Подскажите, пожалуйста, очень нужно!
Вот код:
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
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
#include "stdafx.h"
#include <iostream>
#include <iomanip>
#include <conio.h>
#include <fstream>
#include <math.h>
 
using namespace std;
 
struct file 
{
    char name[10];
    char surname[25];
    unsigned long student_card;
    char birthday[11];
    int course;
};
 
class Student 
{public:
    friend ostream &operator <<(ostream &, const Student &obj);   
    friend istream &operator >> (istream &, Student &obj);
    friend fstream& operator >> (fstream& input, Student& obj);
    friend fstream& operator << (fstream& output, const Student& obj);
 
    file st; 
    Student()
        {
            st.name[0]='\0';
            st.surname[0]='\0';
            st.student_card=0;
            st.birthday[0]='\0';
            st.course=0;
        }
 
 
        int Method(fstream &input)
            {
            int count=0;
            file ss;
            int p;
    input.open("C:\Documents and Settings\Администратор\Мои документы\Visual Studio 2008\Projects\Kyrsovaja\data.txt", ios::in);
    input.seekg(0, ios::end);
    p = input.tellg();
    input.seekg(0, ios::beg);
    while(p > input.tellg()) {
    input.read((char*)&this->st, sizeof(this->st));
    if((this->st.course == 3) && (this->st.birthday[4]>'5' ) && (this->st.birthday[4] <'9'))
        count++;
    }
            return count;
        }
};
 
ostream &operator<<(ostream &output, const Student &obj)
{
 
   output << "\n" << setw(10) << setiosflags(1) << obj.st.name;
   output << setw(15) << setiosflags(1) << obj.st.surname;
   output << setw(1) << setiosflags(1) << obj.st.course;
   output << setw(6) << setiosflags(1) << obj.st.student_card;
   output << setw(11) << setiosflags(1) << obj.st.birthday;
 
     return output;
}
 
 
istream &operator >> (istream &input, Student &obj)
{
    cout << "Vvedite imja (max 10 symvolov): \t";   input >> obj.st.name;
    cout << "Vvedite familijy (max 15 symvolov): \t";   input >> obj.st.surname;
    cout << "Vvedite kyrs [1...6]: \t";     input >> obj.st.course;
    cout << "Vvedite nomer stydencheskogo bileta (maks6 symvolov): \t";     input >> obj.st.student_card;
    cout << "Vvedite daty rozhdenija (dd.mm.gggg): ";       input >> obj.st.birthday;
 
    return input;
}
 
fstream& operator >> (fstream& input, Student& obj) {
   input.read((char*)&obj.st, sizeof(obj.st));
   return input;
}
fstream& operator << (fstream& output, const Student& obj) {
   
   output.write((char*)&obj.st, sizeof(obj.st));
   return output;
}
 
 
int _tmain(int argc, _TCHAR* argv[])
{
int N, i;
cout << "Vvedite kolichestvo stydentov: ";
    cin >> N;
 
    Student object;
    fstream pf;
 
    cout << "Vvedite informacijy o studentah:";
    pf.open("C:\Documents and Settings\Администратор\Мои документы\Visual Studio 2008\Projects\Kyrsovaja\data.txt", ios::out);
    for(int i=0; i<N; i++){
    cout << "\nStudent " << (i+1) << endl;
    cin >> object;
    pf << object;
    }
    pf.close();
 
    cout << "\nBasa stydentov:\n";
    cout << setw(10) << setiosflags(1) << "Imja";
    cout << setw(15) << setiosflags(1) << "Familie";
    cout << setw(1) << setiosflags(1) << "Kyrs";
    cout << setw(6) << setiosflags(1) << "Studencheskij bilet";
    cout << setw(11) << setiosflags(1) << "Data rozhdenija";
   
    pf.open("C:\Documents and Settings\Администратор\Мои документы\Visual Studio 2008\Projects\Kyrsovaja\data.txt", ios::in);
    for(i=0; i<N; i++) {
    pf >> object;
    cout << object;
    }
    pf.close();
 
    int k = object.Method(pf);
    pf.close();
    cout << "\n\nKolichestvo stydentov, rozhdennuh letom = " << k << endl;
 
return 0;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
30.06.2011, 00:52
Здравствуйте! Я подобрал для вас темы с ответами на вопрос вывод тип int в файл, система ввода/вывода (C++):

Низкоуровневый ввод-вывод. Как с помощью функции write записать в файл тип int? - C++
Работаю в Ubuntu.По заданию требуется использовать функции низкоуровневого ввода-вывода.Как с помощью функции write(fd,buf,bufsize)...

Система ввода/вывода - C++
Здорова! Есть задачка: &quot;Напишите миниатюрную систему потокового ввода/вывода, предоставляющую классы istream, ostream, ifstream,...

Открыть файл для ввода и вывода - C++
Все привет. Есть код: #include &lt;iostream&gt; #include &lt;fstream&gt; #include &lt;string&gt; int main() { std::fstream...

Перевод потока из файлового ввода/вывода в консольный ввод/вывод - C++
Есть кусок программы: freopen (&quot;G:\\input.txt&quot;, &quot;r&quot;, stdin); freopen (&quot;G:\\output.txt&quot;, &quot;w&quot;, stdout); //Открываем файлы - один...

Ошибки в программе ввода информации в файл и вывода - C++
Собственно, программа #include &lt;stdio.h&gt; #include &lt;string&gt; #include &lt;iostream&gt; #include &lt;fstream&gt; #define LINE &quot;\n...

Потоки ввода/вывода: дважды скопировать исходный файл - C++
Когда пытаюсь побайтно копировать из одного файла в другой - всё работает. А вот если попытаться ДВА раза скопировать исходный файл , то...

0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
30.06.2011, 00:52
Привет! Вот еще темы с ответами:

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

Ошибка при работе с потоками ввода (вывода) в файл (из файла) - C++
Изучаю перегрузку операторов ввода/вывода с файлом и без. Вылетает такая ошибка при отработанном коде: Необработанное исключение по...

Зачем преобразовывать itsVal в int, если эта переменная и так объявлена как тип int - C++
// Оператор преобразования #include &lt;iostream&gt; using namespace std; class Counter { public: Counter(): itsVal(0) {} ...

Класс Int имитирующий встроенный тип int - C++
Создать класс Int (с заглавной буквы) имитирующий встроенный тип int и позволяющий следующие конструкции: Int i = 0; i = i+1; i++; ...


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

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

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