Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 13, средняя оценка - 4.62
Mayonez
382 / 274 / 53
Регистрация: 26.12.2009
Сообщений: 875
#1

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

04.02.2011, 18:03. Просмотров 2018. Ответов 55
Метки нет (Все метки)

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;
}
не выводит в файл??
http://www.cyberforum.ru/cpp-beginners/thread1708268.html
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.02.2011, 18:03
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Не выводится информация в файл через fstream (C++):

Файл создается, но в него не записываеться информация, и не выводится в консоль
#include &lt;vcl.h&gt; #pragma hdrstop #include&lt;stdlib.h&gt; #include&lt;iostream.h&gt;...

Не выводится информация из файла
не выводится информация с файла! #include &lt;iostream&gt; #include &lt;fstream&gt;...

Функция cin.get - информация не выводится
При вводе числа данная программа работает нормально, однако если ввести,...

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

Чтение файла через fstream
прочитать из файла матрицу и записать в новый файл её минимальный элемент в...

55
alsav22
5438 / 4833 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
11.06.2014, 18:36 #41
Теперь содержимое файла покажите.
0
Ринат
0 / 0 / 3
Регистрация: 29.05.2014
Сообщений: 83
11.06.2014, 18:42 #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 / 3
Регистрация: 29.05.2014
Сообщений: 83
11.06.2014, 18:47 #43
Вот содержимое файла.
0
Миниатюры
Не выводится информация в файл через fstream  
alsav22
5438 / 4833 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
11.06.2014, 18:55 #44
Цитата Сообщение от Ринат Посмотреть сообщение
Вот содержимое файла.
Херня это, а не содержимое файла. Или это не тот файл, куда делается запись, или старое содержимое. Закройте его и снова откройте.
0
Ринат
0 / 0 / 3
Регистрация: 29.05.2014
Сообщений: 83
11.06.2014, 19:23 #45
Удалил файл, запустил программу, она снова его создала там же. результат тот же) Как мне объяснили в коде все правильно, это файл бинарный из за этого такая фигня кароч я сам не понимаю)
0
alsav22
5438 / 4833 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
11.06.2014, 19:30 #46
Цитата Сообщение от Ринат Посмотреть сообщение
Удалил файл
Я говорил удалять? Надоело по кругу ходить.
0
alsav22
5438 / 4833 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
11.06.2014, 19:36 #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);
}
Дальше сами. От темы отписался.
0
Миниатюры
Не выводится информация в файл через fstream   Не выводится информация в файл через fstream  
Ринат
0 / 0 / 3
Регистрация: 29.05.2014
Сообщений: 83
11.06.2014, 19:48 #48
Ок спс.
0
uglyPinokkio
326 / 229 / 55
Регистрация: 30.05.2014
Сообщений: 682
11.06.2014, 20:10 #49
Цитата Сообщение от Ринат Посмотреть сообщение
Как мне объяснили в коде все правильно, это файл бинарный
А где задан бинарный режим открытия?

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

Добавлено через 32 секунды
Вообще я не знаю что за тема про бинарные коды, не пользовался.
0
uglyPinokkio
326 / 229 / 55
Регистрация: 30.05.2014
Сообщений: 682
11.06.2014, 21:31 #51
Цитата Сообщение от Ринат Посмотреть сообщение
Ну этого не было заданно в самом коде
Ну так добавь и проверь. В зависимости от компилятора и ОС оно может быть и не нужно, но лучше поставить.
0
Ринат
0 / 0 / 3
Регистрация: 29.05.2014
Сообщений: 83
12.06.2014, 04:42 #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(
0
uglyPinokkio
326 / 229 / 55
Регистрация: 30.05.2014
Сообщений: 682
12.06.2014, 05:20 #53
Цитата Сообщение от Ринат Посмотреть сообщение
Нашел я всетаки выход из данной ситуации, не так это все прописывается вот рабочий и простой код до которогго я только сейчас допер:
Вообще-то это совсем другое решение - файл текстовый и чтения структуры нет.
0
Ринат
0 / 0 / 3
Регистрация: 29.05.2014
Сообщений: 83
12.06.2014, 14:31 #54
Всмысле чтения труктуры нет?

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

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

Цитата Сообщение от Ринат Посмотреть сообщение
file.getline(line, sizeof(line));
Вот тут читается одна строка а не структура
0
Ринат
0 / 0 / 3
Регистрация: 29.05.2014
Сообщений: 83
13.06.2014, 03:53 #56
Цитата Сообщение от uglyPinokkio Посмотреть сообщение
file.getline(line, sizeof(line));
Вот тут читается одна строка а не структура
Да как бы смысла нету чтения самой структуры надо чтобы считывал с файла, так же и записывал.
0
13.06.2014, 03:53
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
13.06.2014, 03:53
Привет! Вот еще темы с решениями:

Ввод и вывод через fstream
Непонятно почему не выводит в файл. Например в файле 123 &quot;аааббб&quot; а в файл 321...

Запись в файл fstream
После первого прогона не выводит ничего из файла. void WriteInTheFile(fstream...

Fstream не видит файл
Делаю лабу и возникла такая проблема - надо открыть текстовый файл. Файл лежит...

Запись в файл fstream
Вот такой вот код , изобразил я для записи переменной в файл , проблема в том ,...


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

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

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