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

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

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

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

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

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
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.02.2013, 11:05
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Не записывает в файл (C++):

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

Не записывает в файл - C++
Здравствуйте! Сделал сортировку,но почему то не записывается в файл. Сам код: #include&lt;iostream&gt; #include&lt;fstream&gt; using...

Не записывает в файл? - C++
Не записывает результат преобразования в файл, пожалуйста помогите! #include &lt;stdio.h&gt;//Подключение библиотеки стандартного...

Не записывает в файл - C++
посмотрите и исправьте ошибку в коде #include &lt;stdio.h&gt; #include &lt;math.h&gt; #include &lt;conio.h&gt; double f(double uu,double vv)...

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

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

10
Tulosba
:)
Эксперт С++
4396 / 3232 / 297
Регистрация: 19.02.2013
Сообщений: 9,045
20.02.2013, 11:41 #2
Странно. У меня создается. Может быть не в том каталоге смотрите, или нет прав на запись (хотя тогда и не создавался бы вовсе).
0
Elation
0 / 0 / 0
Регистрация: 20.02.2013
Сообщений: 5
20.02.2013, 12:14  [ТС] #3
Tulosba, надо было нажать стрл+з как для окончания ввода данных для файлов(стандартный символ конца файла). Без этого у меня не работает. Хотя тут идет обычный список и должно работать без этого. Никакой логики. Может быть есть специальные настройки для среды?
0
Tulosba
:)
Эксперт С++
4396 / 3232 / 297
Регистрация: 19.02.2013
Сообщений: 9,045
20.02.2013, 12:38 #4
Цитата Сообщение от Elation Посмотреть сообщение
Tulosba, надо было нажать стрл+з как для окончания ввода данных для файлов(стандартный символ конца файла). Без этого у меня не работает. Хотя тут идет обычный список и должно работать без этого. Никакой логики. Может быть есть специальные настройки для среды?
Не понимаю о чем Вы. При выходе переменной outfile из области видимости вызовется деструктор, который сделает flush и закроет файл.
0
Elation
0 / 0 / 0
Регистрация: 20.02.2013
Сообщений: 5
20.02.2013, 12:54  [ТС] #5
Tulosba, я не в курсе почему оно работает у меня так, но если не нажать ctr+z после компиляции файл будет нулевого размера, а если нажать: 0 байт сменяется на 15 и происходит запись.
0
Tulosba
:)
Эксперт С++
4396 / 3232 / 297
Регистрация: 19.02.2013
Сообщений: 9,045
20.02.2013, 13:03 #6
Цитата Сообщение от Elation Посмотреть сообщение
не нажать ctr+z после компиляции
После компиляции или после запуска? В каком окне это делается (в среде или в консоле)?
0
Elation
0 / 0 / 0
Регистрация: 20.02.2013
Сообщений: 5
20.02.2013, 13:14  [ТС] #7
Tulosba, в консоле жму начать отладку
0
ITcrusader
Эксперт С++
176 / 162 / 8
Регистрация: 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
Tulosba
:)
Эксперт С++
4396 / 3232 / 297
Регистрация: 19.02.2013
Сообщений: 9,045
20.02.2013, 13:43 #9
ITcrusader, после выполнения программы файл будет закрыт автоматически, зачем делать close() руками? Понятно, что если пройтись по программе пошагово, файл не запишется пока не вызовется flush() (явно или неявно). Однако, если программа отработала полностью, файл должен быть создан и не пустым.
0
ITcrusader
Эксперт С++
176 / 162 / 8
Регистрация: 12.02.2013
Сообщений: 410
20.02.2013, 13:45 #10
Tulosba, мне казалось, у Elation не полное понимание причины такого поведения, разумеется, close здесь лишний.
0
Elation
0 / 0 / 0
Регистрация: 20.02.2013
Сообщений: 5
20.02.2013, 13:46  [ТС] #11
ITcrusader, теперь все корректно, спасибо за помощь.
0
20.02.2013, 13:46
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
20.02.2013, 13:46
Привет! Вот еще темы с ответами:

Не записывает структуру в файл - C++
Здравствуйте, вот собственно код: struct mystruct { double i; char color; char material; }; int main(int argc, char*...

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

Не записывает ничего в файл - C++
Добро всем утро! Надеюсь хоть у кого-то оно доброе=) Помогите пжл с программой(написать либо подправить). Задача следующая: &quot;Создать...

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


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

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

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