Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/5: Рейтинг темы: голосов - 5, средняя оценка - 5.00
0 / 0 / 0
Регистрация: 20.02.2013
Сообщений: 5
1

Не записывает в файл

20.02.2013, 11:05. Показов 913. Ответов 10
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include "stdafx.h"
#include <list>
#include <conio.h>
#include <iostream>
#include <algorithm>
#include <iterator>
#include <fstream>
using namespace std;
 
int _tmain(int argc, _TCHAR* argv[])
{
    int arr[]={10,20,30,40,50};
    list<int> theList;
    for(int j=0;j<5;j++)
        theList.push_back(arr[j]);
    ofstream outfile("ITER.txt");
    ostream_iterator<int> ositer(outfile," ");
 
    copy(theList.begin(),theList.end(),ositer);
    cout<<endl;
    _getch();
    return 0;
}
В VS 2010 cоздается файл с нулевым размером. Где касяк?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
20.02.2013, 11:05
Ответы с готовыми решениями:

Не записывает в файл
Здравствуйте! Сделал сортировку,но почему то не записывается в файл. Сам код: ...

Не записывает в файл
Доброго времени суток. Написал код, который должен открывать файл, находить в нем определенный...

Не записывает в файл?
Не записывает результат преобразования в файл, пожалуйста помогите! #include...

Не записывает в файл
писал на visual studio, надо переделать на dev. товарищи, помогите. какая-то фигня с fаpp #include...

10
:)
Эксперт С++
4773 / 3267 / 497
Регистрация: 19.02.2013
Сообщений: 9,046
20.02.2013, 11:41 2
Странно. У меня создается. Может быть не в том каталоге смотрите, или нет прав на запись (хотя тогда и не создавался бы вовсе).
0
0 / 0 / 0
Регистрация: 20.02.2013
Сообщений: 5
20.02.2013, 12:14  [ТС] 3
Tulosba, надо было нажать стрл+з как для окончания ввода данных для файлов(стандартный символ конца файла). Без этого у меня не работает. Хотя тут идет обычный список и должно работать без этого. Никакой логики. Может быть есть специальные настройки для среды?
0
:)
Эксперт С++
4773 / 3267 / 497
Регистрация: 19.02.2013
Сообщений: 9,046
20.02.2013, 12:38 4
Цитата Сообщение от Elation Посмотреть сообщение
Tulosba, надо было нажать стрл+з как для окончания ввода данных для файлов(стандартный символ конца файла). Без этого у меня не работает. Хотя тут идет обычный список и должно работать без этого. Никакой логики. Может быть есть специальные настройки для среды?
Не понимаю о чем Вы. При выходе переменной outfile из области видимости вызовется деструктор, который сделает flush и закроет файл.
0
0 / 0 / 0
Регистрация: 20.02.2013
Сообщений: 5
20.02.2013, 12:54  [ТС] 5
Tulosba, я не в курсе почему оно работает у меня так, но если не нажать ctr+z после компиляции файл будет нулевого размера, а если нажать: 0 байт сменяется на 15 и происходит запись.
0
:)
Эксперт С++
4773 / 3267 / 497
Регистрация: 19.02.2013
Сообщений: 9,046
20.02.2013, 13:03 6
Цитата Сообщение от Elation Посмотреть сообщение
не нажать ctr+z после компиляции
После компиляции или после запуска? В каком окне это делается (в среде или в консоле)?
0
0 / 0 / 0
Регистрация: 20.02.2013
Сообщений: 5
20.02.2013, 13:14  [ТС] 7
Tulosba, в консоле жму начать отладку
0
Эксперт С++
177 / 163 / 21
Регистрация: 12.02.2013
Сообщений: 410
20.02.2013, 13:33 8
Elation, Смари, старина. Ты создаешь файл. Его размер нулевой - все правильно. Далее у тебя происходит запись в этот файл. Но пока не произойдет flush - данные в файле не обновятся. У тебя стоит getch() в коде - она ждет в конце программы нажатия любой клавиши тобой и только потом вызывается деструктор для объекта файла и его размер и содержимое обновляются. Тут все работает корректно.

Вот, я добавил одну строку перед getch и по её выполнении файл обновляется, смотри код ниже:

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
#include "stdafx.h"
#include <list>
#include <conio.h>
#include <iostream>
#include <algorithm>
#include <iterator>
#include <fstream>
using namespace std;
 
int _tmain(int argc, _TCHAR* argv[])
{
    int arr[]={10,20,30,40,50};
    list<int> theList;
    for(int j=0;j<5;j++)
        theList.push_back(arr[j]);
    ofstream outfile("ITER.txt");
    ostream_iterator<int> ositer(outfile," ");
 
    copy(theList.begin(),theList.end(),ositer);
    cout<<endl;
    outfile.close();    // закрываем файл вручную за ненадобностью
    _getch();
    return 0;
}
Полагаю, это должно решить твою проблему
1
:)
Эксперт С++
4773 / 3267 / 497
Регистрация: 19.02.2013
Сообщений: 9,046
20.02.2013, 13:43 9
ITcrusader, после выполнения программы файл будет закрыт автоматически, зачем делать close() руками? Понятно, что если пройтись по программе пошагово, файл не запишется пока не вызовется flush() (явно или неявно). Однако, если программа отработала полностью, файл должен быть создан и не пустым.
0
Эксперт С++
177 / 163 / 21
Регистрация: 12.02.2013
Сообщений: 410
20.02.2013, 13:45 10
Tulosba, мне казалось, у Elation не полное понимание причины такого поведения, разумеется, close здесь лишний.
0
0 / 0 / 0
Регистрация: 20.02.2013
Сообщений: 5
20.02.2013, 13:46  [ТС] 11
ITcrusader, теперь все корректно, спасибо за помощь.
0
20.02.2013, 13:46
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
20.02.2013, 13:46
Помогаю со студенческими работами здесь

Не записывает в файл
посмотрите и исправьте ошибку в коде #include &lt;stdio.h&gt; #include &lt;math.h&gt; #include...

не записывает в файл
суть - записать из 3-х файлов в 1 и обратно #define _CRT_SECURE_NO_WARNINGS #include &quot;stdafx.h&quot;...

В файл не записывает массив
Добрый вечер. Есть двумерный строковый массив размером 10x80. При в воде массива создаётся файл,...

Не записывает данные в файл
не могу понять почему ничего в файле не меняется. данные в файле: BSUIR petia 16 BSUIR petrov...


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

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru