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

Не выводится информация в файл через fstream - C++

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 13, средняя оценка - 4.62
Mayonez
 Аватар для Mayonez
379 / 271 / 20
Регистрация: 26.12.2009
Сообщений: 875
04.02.2011, 18:03     Не выводится информация в файл через fstream #1
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <fstream>
#include <iostream>
 
using namespace std;
 
int main()
{
   fstream fio( "input.txt" );
   int a;
   fio >> a;
   fio.open( "output.txt" );
   fio << a << endl;
   
   return 0;
}
не выводит в файл??
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
alsav22
5284 / 4803 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
11.06.2014, 18:36     Не выводится информация в файл через fstream #41
Теперь содержимое файла покажите.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ринат
0 / 0 / 0
Регистрация: 29.05.2014
Сообщений: 77
11.06.2014, 18:42     Не выводится информация в файл через fstream #42
Использовал выравнивание, выводит в консоли терь все ровно, но запись такая же в файл.
Вот код:
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
#include <iostream>
#include <fstream>
#include <string>
#include <stdio.h>
using namespace std;
 
#pragma pack(push,1)
struct name{//глобальная структура к которой обращается функция ввода
char regicer[100];
char films[100];
int god;
int dollar;
}; name lenta[40];
#pragma pack(pop)
 
 
void vvod(void)//Функция ввода по сути которая должна возвращать переменные в структуру.
{
    setlocale(LC_ALL, "RUS");
    int i;
    for(i = 0; i < 3; i++)
    {
        cout<<"ВВедите режисера: ";
        cin>>lenta[i].regicer;
        cout<<"Введите название фильма: ";
        cin>>lenta[i].films;
        cout<<"Введите год выпуска фильма: ";
        cin>>lenta[i].god;
        cout<<"Введите стоимость: ";
        cin>>lenta[i].dollar;
    }
}
 
void writes(void)
{
    setlocale(LC_ALL, "RUS");
    ofstream file("FILMS.TXT");
    for (int i = 0; i < 3; ++i){
        file.write((char *) &lenta[i], sizeof(name));
 
}
file.close();
}
 
void read(void)
{
    setlocale(LC_ALL, "RUS");
    ifstream file("FILMS.TXT");
    name temp;
    while(file.read((char*)&temp, sizeof(name)))
    {
        cout << temp.regicer<<"  "<<temp.films<<"  "<<temp.god<<"  "<<temp.dollar<<endl;
 
   }
   file.close();
}
 
int vivod(void)
{setlocale(LC_ALL,"RUS");
cout<<sizeof(name);
 
 
}
int main()
{
    vvod();
    writes();
    read();
    vivod();
    return(0);
}
Ринат
0 / 0 / 0
Регистрация: 29.05.2014
Сообщений: 77
11.06.2014, 18:47     Не выводится информация в файл через fstream #43
Вот содержимое файла.
Миниатюры
Не выводится информация в файл через fstream  
alsav22
5284 / 4803 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
11.06.2014, 18:55     Не выводится информация в файл через fstream #44
Цитата Сообщение от Ринат Посмотреть сообщение
Вот содержимое файла.
Херня это, а не содержимое файла. Или это не тот файл, куда делается запись, или старое содержимое. Закройте его и снова откройте.
Ринат
0 / 0 / 0
Регистрация: 29.05.2014
Сообщений: 77
11.06.2014, 19:23     Не выводится информация в файл через fstream #45
Удалил файл, запустил программу, она снова его создала там же. результат тот же) Как мне объяснили в коде все правильно, это файл бинарный из за этого такая фигня кароч я сам не понимаю)
alsav22
5284 / 4803 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
11.06.2014, 19:30     Не выводится информация в файл через fstream #46
Цитата Сообщение от Ринат Посмотреть сообщение
Удалил файл
Я говорил удалять? Надоело по кругу ходить.
alsav22
5284 / 4803 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
11.06.2014, 19:36     Не выводится информация в файл через fstream #47
Вот код, ввод, вывод, содержимое файла:
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
#include <iostream>
#include <fstream>
#include <string>
#include <stdio.h>
using namespace std;
 
#pragma pack(push,1)
struct name{//глобальная структура к которой обращается функция ввода
char regicer[100];
char films[100];
int god;
int dollar;
}; name lenta[40];
#pragma pack(pop)
 
 
void vvod(void)//Функция ввода по сути которая должна возвращать переменные в структуру.
{
    setlocale(LC_ALL, "RUS");
    int i;
    for(i = 0; i < 3; i++)
    {
        cout<<"ВВедите режисера: ";
        cin>>lenta[i].regicer;
        cout<<"Введите название фильма: ";
        cin>>lenta[i].films;
        cout<<"Введите год выпуска фильма: ";
        cin>>lenta[i].god;
        cout<<"Введите стоимость: ";
        cin>>lenta[i].dollar;
    }
}
 
void writes(void)
{
    setlocale(LC_ALL, "RUS");
    ofstream file("FILMS.TXT");
    for (int i = 0; i < 3; ++i){
        file.write((char *) &lenta[i], sizeof(name));
 
}
file.close();
}
 
void read(void)
{
    setlocale(LC_ALL, "RUS");
    ifstream file("FILMS.TXT");
    name temp;
    while(file.read((char*)&temp, sizeof(name)))
    {
        cout << temp.regicer<<"  "<<temp.films<<"  "<<temp.god<<"  "<<temp.dollar<<endl;
 
   }
   file.close();
}
 
void vivod(void)
{setlocale(LC_ALL,"RUS");
cout<<sizeof(name);
 
 
}
int main()
{
    vvod();
    writes();
    read();
    vivod();
    return(0);
}
Дальше сами. От темы отписался.
Миниатюры
Не выводится информация в файл через fstream   Не выводится информация в файл через fstream  
Ринат
0 / 0 / 0
Регистрация: 29.05.2014
Сообщений: 77
11.06.2014, 19:48     Не выводится информация в файл через fstream #48
Ок спс.
uglyPinokkio
325 / 228 / 41
Регистрация: 30.05.2014
Сообщений: 682
11.06.2014, 20:10     Не выводится информация в файл через fstream #49
Цитата Сообщение от Ринат Посмотреть сообщение
Как мне объяснили в коде все правильно, это файл бинарный
А где задан бинарный режим открытия?

C++
1
2
3
ofstream file("FILMS.TXT", std::ios_base::binary);
...
ifstream file("FILMS.TXT", std::ios_base::binary);
?
Ринат
0 / 0 / 0
Регистрация: 29.05.2014
Сообщений: 77
11.06.2014, 21:00     Не выводится информация в файл через fstream #50
Ну этого не было заданно в самом коде

Добавлено через 32 секунды
Вообще я не знаю что за тема про бинарные коды, не пользовался.
uglyPinokkio
325 / 228 / 41
Регистрация: 30.05.2014
Сообщений: 682
11.06.2014, 21:31     Не выводится информация в файл через fstream #51
Цитата Сообщение от Ринат Посмотреть сообщение
Ну этого не было заданно в самом коде
Ну так добавь и проверь. В зависимости от компилятора и ОС оно может быть и не нужно, но лучше поставить.
Ринат
0 / 0 / 0
Регистрация: 29.05.2014
Сообщений: 77
12.06.2014, 04:42     Не выводится информация в файл через fstream #52
Щас проверю, только без std
я using namespace std; использую

Добавлено через 36 минут
Нашел ошибку, он записывает все в одну строку и мимолетно игнорирует числа добавляя {} скобки)

Добавлено через 5 минут
Цитата Сообщение от uglyPinokkio Посмотреть сообщение
ofstream file("FILMS.TXT", std::ios_base::binary);
...
ifstream file("FILMS.TXT", std::ios_base::binary)
использовал толку 0, там надо как то перевести все по строкам

Добавлено через 3 часа 25 минут
Нашел я всетаки выход из данной ситуации, не так это все прописывается вот рабочий и простой код до которогго я только сейчас допер:
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
#include <iostream>
#include <fstream>
#include <string>
#include <stdio.h>
using namespace std;
 
#pragma pack(push,1)
struct name{//глобальная структура к которой обращается функция ввода
char regicer[100];
char films[100];
int god;
int dollar;
}; name lenta[40];
#pragma pack(pop)
 
 
void vvod(void)//Функция ввода по сути которая должна возвращать переменные в структуру.
{
    setlocale(LC_ALL, "RUS");
    int i;
    for(i = 0; i < 3; i++)
    {
        cout<<"ВВедите режисера: ";
        cin>>lenta[i].regicer;
        cout<<"Введите название фильма: ";
        cin>>lenta[i].films;
        cout<<"Введите год выпуска фильма: ";
        cin>>lenta[i].god;
        cout<<"Введите стоимость: ";
        cin>>lenta[i].dollar;
    }
}
 
void writes(void)
{
 
    setlocale(LC_ALL, "RUS");
    ofstream file("FILMS.TXT");
    file<<"Режжисер  "<<"Фильм  "<<"Год  "<<"Цена  "<<endl;
    for (int i = 0; i < 3; ++i){
        file<<lenta[i].regicer<<"  "<<lenta[i].films<<"  "<<lenta[i].god<<"  "<<lenta[i].dollar<<endl;
    }
 
file.close();
}
 
void read(void)
{
    setlocale(LC_ALL, "RUS");
    ifstream file("FILMS.TXT");
    char line[100];
    while(! file.eof())
    {
        file.getline(line, sizeof(line));
        cout<<line<<endl;
    }
   file.close();
}
 
int main()
{setlocale(LC_ALL,"RUS");
    vvod();
    writes();
    read();
    return(0);
}
Остается только выровнять под название и все чики пуки, ну и еще добавить функцию сортировки для удаления строк не подходящих по цене.

Добавлено через 24 минуты
Да вот еще вопрос как так чтобы Русский язык тоже читало? setlocale везде вроде стоит а при вводе данных на Русском языке выводит белибирду8(
uglyPinokkio
325 / 228 / 41
Регистрация: 30.05.2014
Сообщений: 682
12.06.2014, 05:20     Не выводится информация в файл через fstream #53
Цитата Сообщение от Ринат Посмотреть сообщение
Нашел я всетаки выход из данной ситуации, не так это все прописывается вот рабочий и простой код до которогго я только сейчас допер:
Вообще-то это совсем другое решение - файл текстовый и чтения структуры нет.
Ринат
0 / 0 / 0
Регистрация: 29.05.2014
Сообщений: 77
12.06.2014, 14:31     Не выводится информация в файл через fstream #54
Всмысле чтения труктуры нет?

Добавлено через 1 минуту
Цитата Сообщение от Ринат Посмотреть сообщение
file<<lenta[i].regicer<<" *"<<lenta[i].films<<" *"<<lenta[i].god<<" *"<<lenta[i].dollar<<endl;
* * }
Вот тут он считывает данные со структуры и записывает их построчно в файл.

Добавлено через 4 минуты
Я в файле проверял все записывает. Так как на чтении так и в файле.
uglyPinokkio
325 / 228 / 41
Регистрация: 30.05.2014
Сообщений: 682
12.06.2014, 15:09     Не выводится информация в файл через fstream #55
Цитата Сообщение от Ринат Посмотреть сообщение
Всмысле чтения труктуры нет?
В прямом.

Цитата Сообщение от Ринат Посмотреть сообщение
file.getline(line, sizeof(line));
Вот тут читается одна строка а не структура
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
13.06.2014, 03:53     Не выводится информация в файл через fstream
Еще ссылки по теме:

C++ Запись в файл fstream
Не выводится информация из файла C++
Функция cin.get - информация не выводится C++
C++ Информация не сохраняется файл через fstream
Fstream не видит файл C++

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

Или воспользуйтесь поиском по форуму:
Ринат
0 / 0 / 0
Регистрация: 29.05.2014
Сообщений: 77
13.06.2014, 03:53     Не выводится информация в файл через fstream #56
Цитата Сообщение от uglyPinokkio Посмотреть сообщение
file.getline(line, sizeof(line));
Вот тут читается одна строка а не структура
Да как бы смысла нету чтения самой структуры надо чтобы считывал с файла, так же и записывал.
Yandex
Объявления
13.06.2014, 03:53     Не выводится информация в файл через fstream
Ответ Создать тему
Опции темы

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