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

fstream: открытие на запись - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Работа с string в С++ http://www.cyberforum.ru/cpp-beginners/thread343914.html
Переменная string str = "123456". Необходимо второй элемент переменной str (str) преобразовать в число и передать в переменную int i. Как это можно сделать?
C++ Модули программы Привет! Недавно начал изучать си++, и у меня возник такой вопрос: как разместить класс или функцию в отдельном модуле. http://www.cyberforum.ru/cpp-beginners/thread343895.html
Лучшая книга по с++ для новичков C++
Какая самая лучшая книга для новичков в c++ Вот несколько вариантов: С++ для начинающих. Шаг за шагом - Герберт Шилдт Полный справочник по C++ - Герберт Шилдт C++: базовый курс - Герберт Шилдт...
C++ Как инициализировать статический константный массив в классе?
Например, есть класс, которой статически хранит виды себя. Не могу понять как его инициализировать (Или может предложите хранить по другому?) class Object { private: static const Object...
C++ Доступ внука к Protected http://www.cyberforum.ru/cpp-beginners/thread343853.html
Здравствуйте, сегодня встал перед такой проблемой. Дело в том, что создал класс, наследующий public доступом по цепочке (внук). Но если сын мог использовать protected отца, я ожидал, что и внук...
C++ Перевернуть число Задача: Перевернуть введенное пользователем число и вывести на екран. Сначала я подсчитал количество цифр в числе: #include <iostream> #include <math.h> using namespace std; void main() { подробнее

Показать сообщение отдельно
Teravisor
31 / 31 / 3
Регистрация: 07.08.2011
Сообщений: 89
22.08.2011, 15:42  [ТС]
Конечно, спасибо за ответы, НО:
Цитата Сообщение от kazak Посмотреть сообщение
Для произвольного доступа есть режим ios::ate.
"ios::ate Set the initial position at the end of the file.
If this flag is not set to any value, the initial position is the beginning of the file."
См. то, что мне нужно.

Цитата Сообщение от Gepar Посмотреть сообщение
Teravisor, открой файл, а потом установи курсор куда тебе нужно чтобы начать дописывать файл используя seekp(позиция). После этого наверное надо будет очистить файл до конца, но это ты уже смори сам что тебе дальше будет нужно сделать.
Цитата Сообщение от Gepar Посмотреть сообщение
Информация которая будет после того что вы дописывали останется и никуда не денется.
Пример с мнемокодом:
file:123456789
file.seekp(3)
file<<бла
file:123бла789
Сделав так никуда ничто не будет отбрасываться, только это надо попробовать прежде чем задавать 100500ый раз тот же вопрос.
Извините, но я ПРОБОВАЛ, и всё зависит от того как вы файл откроете. ios::out? тогда содержимое выкинется. и получится результат
file:бла
ios::in|ios::out? а зачем нам ios::in, мы не собираемся читать, только записывать?


Цитата Сообщение от Gepar Посмотреть сообщение
Потому что файл открывается для ВЫВОДА.
ios::out|ios::in не поверите, ТОЖЕ открывает файл для ВЫВОДА! Но еще и для ВВОДА, что мне совершенно не нужно в данном случае. Вопрос прочитайте по внимательнее - я же спрашиваю почему оно выкидывает содержимое файла даже без ios::trunc

Цитата Сообщение от Gepar Посмотреть сообщение
Потому что гладиолус отбрасывается содержимое файла, никто нигде никому обрезаний не делает.
Повторю в третий раз: И без него оно выбрасывает содержимое.

Цитата Сообщение от Gepar Посмотреть сообщение
Потому что файл открывается и для ВВОДА и для ВЫВОДА, смысл открывать для ВВОДА с файла пустой файл (если отбросить его содержимое?).
Так почему при открытии только на вывод содержимое файла выкидывается?

Цитата Сообщение от Gepar Посмотреть сообщение
Быстрее чем что? Чем создание нового файла и запись его с нуля полностью? Ну конечно работает быстрее. Проще открыть файл размером в 1 гб для чтения и записи и изменив 1 байт закрыть его чем перезаписать новый изменённый файл.
А вдруг оно всю перезапись прячет от пользователя? Вопрос на устройство STL был. Плюс, 1 байт изменить в файле нельзя - минимальная единица изменения - размер кластера на разделе(за исключением особых разделов, которые я не рассматриваю).

Цитата Сообщение от Gepar Посмотреть сообщение
Интересно каким образом не открывая файл для вывода вы собрались заменить его часть, разве что ваш винт может быстро заменить содержимое битыми секторами и это и впрямь будет быстрее чем вы будете редактировать файл.
Я имел ввиду открывая и записывая другими средствами.
Цитата Сообщение от Gepar Посмотреть сообщение
А вообще все 5 вопросов описаны же в книге, я считаю что все ваши 5 вопросов вы могли и сами решить прочитав соотв. главу в учебнике по с++.
Страуструп по этому поводу говорит печальные вещи, в MSDN этот момент не оговорен, на cplusplus.com/doc/ так же нет ответа.

Конкретнее, Страуструп пишет:
Фактические значения openmode и их смысл определяются при реализации. Насчет деталей сверьтесь, пожалуйста, с руководством по вашей системе - и поэкспериментируйте.
Но в MSDN этого не указано. А на эксперименте ios::out без аргументов это то же, что и ios::out|ios::trunc.

Вопрос остается в силе - как заменить часть файла не открывая его на чтение, и насколько менее эффективна работа в режиме ios::out|ios::in, чем просто ios::out. Ни на то, ни на другое я внятного ответа еще не увидел.
0
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru