|
1 / 1 / 0
Регистрация: 18.02.2014
Сообщений: 213
|
|
Запись в начало файла19.08.2014, 10:13. Показов 17811. Ответов 14
Метки нет (Все метки)
Здравствуйте мне нужно записать слово "zashivrovano" в начале каждого файла:
я так понял алгоритм следующий: 1) Создаем новый файл 2) Пишем в него слово Zsdhifrovano 3) Дописать данные из старого файла 4) удалить старый файл 5) Переименовать новый файл в имя старого Вопрос: А какой функцией дописывать данные из старого файла в новый? и вопрос лучше реализовывать с помощью потоков ofstream и ifstream я так понял файл нужно считать в буфер но если файл большой допустим 2гб?
0
|
|
| 19.08.2014, 10:13 | |
|
Ответы с готовыми решениями:
14
Запись в начало файла. Запись в начало файла Запись данных в начало файла |
|
4 / 4 / 5
Регистрация: 15.08.2014
Сообщений: 30
|
|
| 19.08.2014, 10:57 | |
|
Мне кажется, что можно было просто открыть файл, переставить указатель в начало и оттуда начать запись в файл. Всё старое просто передвинется, а то, что тебе было необходимо записать - окажется в самом начале. Ну, если я не прав, можно просто считать из файла в вектор к примеру, затем перезаписать в него то, что тебе надо, после чего - дозаписать то, что ты считал в вектор.
![]() И - да, думаю тут лучше ifstream, ofstream / fstream
0
|
|
|
1 / 1 / 0
Регистрация: 18.02.2014
Сообщений: 213
|
|
| 19.08.2014, 11:04 [ТС] | |
|
"просто считать из файла в вектор к примеру"
как это делается?
0
|
|
|
4 / 4 / 5
Регистрация: 15.08.2014
Сообщений: 30
|
||||||
| 19.08.2014, 11:24 | ||||||
|
kold2015, вы не пробовали сперва просто дописать эту фразу в начало файла?
Добавлено через 5 минут
0
|
||||||
|
1 / 1 / 0
Регистрация: 18.02.2014
Сообщений: 213
|
|
| 19.08.2014, 11:53 [ТС] | |
|
гуглил везде вроде пишут что нельзя добавит в начало файла
нужно действовать по алгоритму который я написал выше
0
|
|
|
3225 / 1752 / 436
Регистрация: 03.05.2010
Сообщений: 3,867
|
||||||
| 19.08.2014, 11:55 | ||||||
0
|
||||||
|
1 / 1 / 0
Регистрация: 18.02.2014
Сообщений: 213
|
||||||
| 20.08.2014, 10:13 [ТС] | ||||||
|
сделал я через временный файл
Добавлено через 17 часов 16 минут вот моя реализация
0
|
||||||
|
0 / 0 / 0
Регистрация: 11.08.2014
Сообщений: 40
|
|
| 20.08.2014, 18:25 | |
|
А нельзя просто использовать имя-потока.seekp(кол-во байтов, ios::end)? Смещаем указатель в начало файла с конца, и выводим в него имя-потока << "zashifrovano\n";
Просто так проще получается, нежели приведенные варианты выше, не?
0
|
|
|
1 / 1 / 0
Регистрация: 18.02.2014
Сообщений: 213
|
|
| 20.08.2014, 19:39 [ТС] | |
|
помойму нельзя файл затирается
0
|
|
|
0 / 0 / 0
Регистрация: 11.08.2014
Сообщений: 40
|
|
| 20.08.2014, 19:44 | |
|
kold2015, а почему ты не рассмотрел вариант копирования файла в буфер с помощью get(), вывода требуемого слова и последующим выводом файла?
0
|
|
|
617 / 375 / 67
Регистрация: 09.03.2016
Сообщений: 4,031
|
|
| 24.12.2021, 00:42 | |
|
SYSTEMTIME st;
GetLocalTime(&st); std::string folder_name = std::to_string(st.wDay) + "." + std::to_string(st.wMonth) + "." + std::to_string(st.wYear) + " -- " + std::to_string(st.wHour) + "." + std::to_string(st.wMinute);// <== c11 есть to_wstring( std::ofstream fileOUT(buf, std::ios::app); //Пишем в файл (В конец в нормальном режиме) static char tmp[50]; sprintf(tmp, "%s%s", "---------------------------------- ", folder_name.c_str()); fileOUT << tmp << std::endl; fileOUT << chBuffer << std::endl; // append "some stuff" to the end of the file fileOUT.close(); // close the file Sleep(100); // =========================== Чтение всего текста в массив std::ifstream fin; fin.open(buf, std::ifstream::binary);// Открываем в бинарном режиме // Проверяем, удалось ли файл открыть. if (!fin.is_open()) std::cerr << " Что-то пошло не так и текст не был открыт " << std::endl; else { fin.seekg(0, std::ios_base::end);// Перемещаем текущую позицию в файле в конец. size_t f_size = fin.tellg();// Получаем текущую позицию. fin.seekg(0, std::ios_base::beg);// Возвращаем текущую позицию в начало файла. //----------------------------------- char *arr = new char[f_size];// Выделим динамически память соответствующего размера. fin.read(arr, f_size);// Читаем весь текст if (fin) {// --- прочитано нормально fin.close();// прочитал в массив, Файл больше не нужен, можно закрыть. Sleep(100); // ================================= Записать из массива обратно в тот же файл с сортировкой std::ofstream dst(//out_filename ------- Открываем такой же файл, замещая старый buf, std::ios::binary); for (int i = (f_size - strlen(chBuffer) - strlen(tmp) - 2); i < f_size; ++i) dst << arr[i];// С конца массива последний буфер. for (int i = 0; i < f_size - strlen(chBuffer) - strlen(tmp) - 4; ++i) dst << arr[i];// С начала массива что было в файле раньше. dst.close();// Закрываем его //------------------------------- } delete[] arr; }
0
|
|
|
Вездепух
12942 / 6809 / 1821
Регистрация: 18.10.2014
Сообщений: 17,234
|
|||
| 24.12.2021, 01:36 | |||
"---------------------------------- ".Непонятно, почему static...19+35 = 54... Тогда понятно, почему static...
0
|
|||
|
617 / 375 / 67
Регистрация: 09.03.2016
Сообщений: 4,031
|
||||||
| 24.12.2021, 16:55 | ||||||
|
/* Понятно тема старая
просто я в интернете ни чего не нашёл три вечера сам изобретал. Могу. работает. Это я из буфера виндовс в текст. Маленькая програмулина, но гавнистая. */
0
|
||||||
|
Вездепух
12942 / 6809 / 1821
Регистрация: 18.10.2014
Сообщений: 17,234
|
|
| 24.12.2021, 19:09 | |
0
|
|
|
617 / 375 / 67
Регистрация: 09.03.2016
Сообщений: 4,031
|
||||||
| 24.12.2021, 22:19 | ||||||
|
// Спасибо за критику исправил
// верхняя часть
0
|
||||||
| 24.12.2021, 22:19 | |
|
Помогаю со студенческими работами здесь
15
Ofstream запись в начало файла Запись в начало файла Запись в начало файла Запись в начало файла Запись текста в начало файла Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога
Финальные проекты на Си и на C++:
hello-sdl3-c. zip
hello-sdl3-cpp. zip
Результат:
|
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога
MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
|
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд.
Даже если у вас. . .
|
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает
монорепозиторий в котором находятся все исходники.
При создании нового решения, мы просто добавляем нужные проекты
и имеем. . .
|
|
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение:
В этой книге («Подход, основанный на вариантах использования») Ивар утверждает,
что архитектура программного обеспечения — это
структуры,. . .
|
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога
Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
|
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога
Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip
На первой гифке отладочные линии отключены, а на второй включены:. . .
|
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога
Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем.
. . .
|