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

Считывание из файла - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ в чем ошибка? http://www.cyberforum.ru/cpp-beginners/thread860967.html
Дано целое позитивное число n. Составить алгоритм вычисления суммы В чем ошибка в коде?#include <iostream> #include <conio.h> #include <math.h> #include <locale.h> using namespace std; ...
C++ Задание на создание классов Дорогие коллеги! Помогите новичку разобраться с этим заданием! Задание на создание классов Данное задание предполагает создать базовый класс фигуры, указанный в задании класс и в нем реализовать... http://www.cyberforum.ru/cpp-beginners/thread860963.html
C++ Приостановка выполнения программы
Подскажите пожалуйста, можно ли в си как-нибудь реализовать приостановку выполнения программы на несколько секунд? Нужно что-то вроде system("pause"); только не до нажатия enter а на заданное мной...
Возвращение значения функции C++
Как сделать отдельно функцию, чтобы она возвращала в основную функцию значение sum? Помогите пожалуйста! #include <stdio.h> #include <stdlib.h> int main(){ int number,sum=0; ...
C++ Ошибка кучи http://www.cyberforum.ru/cpp-beginners/thread860913.html
Здравствуйте, уважаемые программисты. Возникла у меня такая проблема: Задали сделать курсовую работу на С++ через MFC. Суть задачи: В файле даны координаты треугольников. Вывести их на экран....
C++ Карточная игра.Стек на основе массива Пишу карточную игру. Нужно создать стек на основе массива для карт.Всего 52 карты. Все одной масти. стек вроде написала,а вот дальше не знаю как сделать static array <int>^ C = gcnew array... подробнее

Показать сообщение отдельно
Why so seriouS
44 / 44 / 1
Регистрация: 12.03.2013
Сообщений: 167

Считывание из файла - C++

10.05.2013, 20:24. Просмотров 335. Ответов 7
Метки (Все метки)

Всем привет! Есть вот такая проблема: при считывании данных из файла в объект ниоткуда берутся лишние данные. В чем может быть проблема? Вот пример файла:
1 1 1
2 2 2
А вот что получается когда считываю файл:
1 1 1
2 2 2
2 2
C++
1
2
3
4
5
6
7
8
9
10
11
12
void output(Toys &T)
{
    ifstream in("1.txt");
    char ch;
    while((ch = in.get()) != EOF)
    {
        in.unget();
        in >> T;
        cout << T;
    }
    in.close();
}
Вот полный код:
Toys.h
Кликните здесь для просмотра всего текста
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
#ifndef _TOYS_H_
#define _TOYS_H_
 
#include <iostream>
#include <fstream>
 
using namespace std;
 
class Toys
{
    friend ostream& operator<<(ostream& output,const Toys& T)
    {
        output << T.name << " ";
        output << T.vartist << " ";
        output << T.vikovi_mechi << endl;
 
        return output;
    }
    friend istream& operator>>(istream& intput, Toys& T)
    {
        intput >> T.name;
        intput >> T.vartist;
        intput >> T.vikovi_mechi;
 
        return intput;
    }
    friend ifstream& operator>>(ifstream& intput, Toys& T)
    {
        intput >> T.name;
        intput >> T.vartist;
        intput >> T.vikovi_mechi;
 
        return intput;
    }
    friend ofstream& operator<<(ofstream& output, Toys& T)
    {
        output << T.name << " ";
        output << T.vartist << " ";
        output << T.vikovi_mechi << endl;;
 
        return output;
    }
public:
    bool vart(int tmp)
    {
        if(vartist <= tmp && vikovi_mechi <= 5) return true;
        return false;
    }
    char* getName(){return name;}
    int getVik(){return vikovi_mechi;}
private:
    char name[10];
    int vartist;
    int vikovi_mechi;
};
 
#endif

main.cpp
Кликните здесь для просмотра всего текста
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
#include <conio.h>
#include <Windows.h>
#include "Toys.h"
 
int menu();
void input(Toys&);
void output(Toys&);
void Show_name(Toys&);
void dozapus(Toys&);
 
int main()
{
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
    system("color 0F");
    int key = 0;
    Toys T;
    while(true)
    {
        key = menu();
        system("cls");
        if(key == 0)
        {
            input(T);
        }
        if(key == 1)
        {
            output(T);
            system("pause>0");
        }
        if(key == 2)
        {
            Show_name(T);
            system("pause>0");
        }
        if(key == 3)
        {
            dozapus(T);
            system("pause>0");
        }
        if(key == 4)
        {
            break;
        }
    }
    return 0;
}
void dozapus(Toys &T)
{
    ofstream out("1.txt",ios::app);
    cin>>T;
    out<<T;
    out.close();
}
void Show_name(Toys &T)
{
    ifstream in("1.txt");
    char ch;
    int tmp = 2;
    while((ch = in.get()) != EOF)
    {
        in.unget();
        in >> T;
        if(T.vart(tmp)) cout << T.getName();
    }
    in.close();
}
void output(Toys &T)
{
    ifstream in("1.txt");
    char ch;
    while((ch = in.get()) != EOF)
    {
        in.unget();
        in >> T;
        cout << T;
    }
    in.close();
}
void input(Toys &T)
{
    ofstream out("1.txt");
    int tmp;
    cin>>tmp;
    while(tmp)
    {
        cin>>T;
        out<<T;
        tmp--;
    }
    out.close();
}
int menu()
{
    int key = 0;
    int code;
    do
    {
        system("cls");
        key = (key+5)%5;
 
        if(key==0) cout<<"=> Ввести дані."<<endl;
        else cout<<"   Ввести дані."<<endl;
 
        if(key==1) cout<<"=> Вивести дані."<<endl;
        else cout<<"   Вивести дані."<<endl;
 
        if(key==2) cout<<"=> Редагувати дані."<<endl;
        else cout<<"   Редагувати дані."<<endl;
 
        if(key==3) cout<<"=> Дозаписати дані."<<endl;
        else cout<<"   Дозаписати дані."<<endl;
 
        if(key==4) cout<<"=> Вихід."<<endl;
        else cout<<"   Вихід."<<endl;
 
        code = getch();
 
        if(code == 80) key++;
        if(code == 72) key--;
    }while(code != 13);
 
    return key;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru