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

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

Войти
Регистрация
Восстановить пароль
 
 
Andrey040601
4 / 4 / 3
Регистрация: 13.07.2014
Сообщений: 127
Завершенные тесты: 5
#1

Ios::ate затирает файл - C++

05.09.2015, 22:13. Просмотров 510. Ответов 20
Метки нет (Все метки)

Код:

C++
1
2
3
4
5
ofstream fout("D:\\a.com", ios::out | ios::binary | ios::ate);
 
    fout.seekp(0, ios::beg);
 
    fout.put(num);
В начало файла должно быть добавлено num. Но файл весь затирается, оставляя только это число. Как сделать так, чтобы число либо добавлялось, либо заменялось, оставляя все остальное?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
05.09.2015, 22:13
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Ios::ate затирает файл (C++):

Разница между ios::ate и ios::app - C++
Здравствуйте, кто нить может поконкретнее и человеческим языком объяснить в чем разница между ios::ate и ios::app ? Был бы весьма...

ios::app,ios::ate,различия - C++
Есть такая формулировка: Отсюда http://www.cyberforum.ru/post441043.html Посмотрим другую формулировку: Отсюда...

Ios::ate и ios::app - C++
Добрый день, тут на форуме вычитал, что открытие файла с включенным битом ios::app автоматически ставит указатель чтения и записи на конец...

Ios_base::ate - C++
Здравствуйте, не могу понять, почему следующий код выводит в место 123456 просто 456. #include "stdafx.h" #include <iostream> ...

Ios::out не открывает файл - C++
Доброй день! Столкнулся с такой проблемой, при вызове функции программа не открывает файл void ObjMass::saveFile() { ofstream...

Почему метод класса затирает статическое поле - C++
Добрый день :) Я учу самостоятельна с++. Сейчас разбираю тему классы. Вот у меня возник вопрос по коду: #include<iostream> using...

20
castaway
Эксперт С++
4885 / 3020 / 370
Регистрация: 10.11.2010
Сообщений: 11,078
Записей в блоге: 10
Завершенные тесты: 1
05.09.2015, 22:19 #2
Ты же сам указываешь на флаг ios::ate. И в заголовке темы, и в сообщении.
0
Andrey040601
4 / 4 / 3
Регистрация: 13.07.2014
Сообщений: 127
Завершенные тесты: 5
05.09.2015, 22:21  [ТС] #3
Если его убрать, ничего не поменяется. А ios::app записывает в конец файла
0
Croessmah
Эксперт CЭксперт С++
13508 / 7666 / 866
Регистрация: 27.09.2012
Сообщений: 18,858
Записей в блоге: 3
Завершенные тесты: 1
05.09.2015, 22:25 #4
ios::app,ios::ate,различия
0
castaway
Эксперт С++
4885 / 3020 / 370
Регистрация: 10.11.2010
Сообщений: 11,078
Записей в блоге: 10
Завершенные тесты: 1
05.09.2015, 22:30 #5
Цитата Сообщение от castaway Посмотреть сообщение
Ты же сам указываешь на флаг ios::ate.
Цитата Сообщение от Andrey040601 Посмотреть сообщение
Если его убрать, ничего не поменяется. А ios::app записывает в конец файла
Цитата Сообщение от Andrey040601 Посмотреть сообщение
Как сделать так, чтобы число либо добавлялось, либо заменялось, оставляя все остальное?
У тебя мысли не связаны.
0
Andrey040601
4 / 4 / 3
Регистрация: 13.07.2014
Сообщений: 127
Завершенные тесты: 5
05.09.2015, 22:35  [ТС] #6
Нужно так. В файле уже есть некий текст(код, в данном случае). Нужно добавить свой в начало. Просто, у меня стирается весь файл, оставляя только добавленный
0
castaway
Эксперт С++
4885 / 3020 / 370
Регистрация: 10.11.2010
Сообщений: 11,078
Записей в блоге: 10
Завершенные тесты: 1
05.09.2015, 22:39 #7
Andrey040601, если ты внятно опишешь проблему, то шансов её решить будет больше.
0
Andrey040601
4 / 4 / 3
Регистрация: 13.07.2014
Сообщений: 127
Завершенные тесты: 5
05.09.2015, 22:56  [ТС] #8
Код выше стирает вообще все содержимое файла, заменяя новым. Как сделать, чтобы новый текст можно было вводить в файл(в начало), НЕ стирая ВСЕ старое содержимое?
0
castaway
Эксперт С++
4885 / 3020 / 370
Регистрация: 10.11.2010
Сообщений: 11,078
Записей в блоге: 10
Завершенные тесты: 1
05.09.2015, 23:02 #9
Средствами ОС - никак.
Читаешь содержимое файла, пишешь "начало", пишешь содержимое файла.
0
Avazart
Нарушитель
Эксперт С++
7232 / 5404 / 292
Регистрация: 10.12.2010
Сообщений: 23,945
Записей в блоге: 17
06.09.2015, 00:25 #10
Цитата Сообщение от Andrey040601 Посмотреть сообщение
Как сделать, чтобы новый текст можно было вводить в файл(в начало),
Что бы старый тест смещался, никак.
0
Andrey040601
4 / 4 / 3
Регистрация: 13.07.2014
Сообщений: 127
Завершенные тесты: 5
06.09.2015, 07:46  [ТС] #11
А заменяя старую строку новой, но прм этом оставляя последующие строки?
0
Mr.X
Эксперт С++
3050 / 1695 / 265
Регистрация: 03.05.2010
Сообщений: 3,867
06.09.2015, 08:40 #12
Цитата Сообщение от Andrey040601 Посмотреть сообщение
А заменяя старую строку новой, но прм этом оставляя последующие строки?
Только в бинарном режиме функцией write, но для этого нужно знать размер заменяемого участка.
0
nmcf
5349 / 4669 / 1561
Регистрация: 14.04.2014
Сообщений: 18,595
06.09.2015, 08:43 #13
Можно записывать поверх, но тогда длина новой и старой строк должна быть одинаковой, иначе либо захватишь следующую, либо останется кусок от старой.
0
Croessmah
Эксперт CЭксперт С++
13508 / 7666 / 866
Регистрация: 27.09.2012
Сообщений: 18,858
Записей в блоге: 3
Завершенные тесты: 1
06.09.2015, 09:28 #14
Как вариант, что нужно записать в начало, пишите в другой файл, потом в него же добавьте содержимое из старого файла. Старый под снос, новый переименовываем.
0
Ferrari F1
603 / 496 / 99
Регистрация: 27.01.2015
Сообщений: 2,908
Записей в блоге: 1
Завершенные тесты: 1
06.09.2015, 10:55 #15
Andrey040601,
C++
1
ofstream fout("D:\\a.com", ios::out | ios::binary | ios::ate);
зачем для объекта ofstream писать ios::out?
Ios::ate затирает файл

C++
1
2
3
ofstream fout("D:\\a.com", ios::binary | ios::ate);
fout.seekp(0, ios::beg);
fout.put(num);
0
06.09.2015, 10:55
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
06.09.2015, 10:55
Привет! Вот еще темы с ответами:

Ввод матрицы из файла - затирает последний элемент предыдущей строки - C++
Странный эффект Содержимое вводимого файла- 1 2 3 4 5 6 int *a; a = new(2*3); for (i=0;i<2;i++) for...

Сложение строк затирает исходную строку сначала, что делать? - C++
#include <iostream> #include <fstream> #include <cstring> #include <string> #include <stdio.h> #include <conio.h> ...

не работает ios::in|ios::out - C++
Здорова господа!!! Пытаюсь разобраться с файлами в С++ от есть код: #include <iostream> using std::cout; using std::cin; ...

std::ios::hex или std::ios.hex - C++
привет в коде встретил вот такую строчку ss.setf(std::ios.hex, std::ios::basefield); и на VS2008 это работает. Разве это...


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

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

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