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

Не работает seekp() - C++

Восстановить пароль Регистрация
 
ninja2
 Аватар для ninja2
230 / 186 / 7
Регистрация: 26.09.2012
Сообщений: 2,018
Завершенные тесты: 1
06.01.2013, 17:44     Не работает seekp() #1
Здорова господа!!!
У меня вообщем проблемка я от отрываю файл для редактирования
ios::app курсор в конце файла
затем делаю seekp(0) курсор должен как бы переместиться в начало файла
затем делаю отступ от начала на n-байт(символов) seekp(3)
затем идет запись поверх имеющейся записи в файле ob6ekt <<"blabla"

Казалось бы должно работать но почемуто у меня записывается в конец файла, а не в то место где указывает указатель файла????

Как перемещать указатель по файлу?!
Если можно пример в студию плиз?!

Вот часть кода:
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
25
26
27
28
29
if(addAccount==account)
        {
            cout <<"Account - "<<addAccount<<" imeets9 v faile oldmast.dat"<<endl;
            double old=account;
            double newBalance=balance+addBalance;
            cout <<"Novui balans "<<newBalance<<endl;
            int pos = Read.tellg();
            cout <<"pos = "<<pos<<endl;
            cout <<"pos-sizeof(balance)= "<<pos-sizeof(balance)<<endl;
            //cout <<"reinterpret_cast= "<<sizeof(balance)<<endl;
            //zapisat6 i soxranit6 v fail novoe znachenie
            //1. sozdaem novui fail dl9 zapisi
            ofstream Write("oldmast.dat", ios::app);
            //2.proverit6 otkrutie faila
            if(!Write)
            {
                cerr <<"fail no open (f.addTrans.Read)"<<endl;
                exit(1);
            }
            Write.seekp(1, ios::beg);//ystanovka ykazatel9 v nachalo.
            pos=Write.tellp();
            cout <<"pos= "<<pos<<endl;
            //Write.seekp(pos*sizeof(balance));
            //perezapisat6 dannue
            Write <<newBalance<<endl;
            
            
            
        }
да еще функция tellp() показывает что указатель по файлу якобы перемещается, меняет свое значение, но всерамно записывает в конец файла. Хелп!

п.с. (срочно нужно выучить за две недели с++)

Добавлено через 49 минут
я от маленький кусок кода сделал готовы можете попробовать в начало всерамно не записывает
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
25
26
27
28
#include <iostream>
using std::cout;
using std::cin;
using std::endl;
using std::ios;
using std::cerr;
#include <fstream>
using std::ofstream;
using std::ifstream;
#include <cstdlib>
using std::exit;
 
int main()
{
    //peremechenie kyrsora dl9 zapisi v faile
    ofstream write("oldmast.dat",ios::app);
    if(!write)
    {
        cerr <<"don't open file"<<endl;
        exit(1);
    }
    cout <<"Ykazatel6 f raven= "<<write.tellp()<<endl;//36
    write.seekp(1);
    write <<"9wa";
    cout <<"Ykazatel6 f raven= "<<write.tellp()<<endl;//4 no toka zapisuvaet v kones faila a doljno nachalo perepisat6
    
       return 0;
}
Ну же чо тут знатоков нету?! Помогите новичку!
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
06.01.2013, 17:44     Не работает seekp()
Посмотрите здесь:

Какие различия у функций seekg и seekp для работы с файлами? C++
C++ Разница между seekg() и seekp()
C++ Не работает явное преобразование типа, а неявное работает.
C++ То работает, то не работает. Массив из случайных вещественных чисел
Приложение работает в Win2K, не работает в Win2003 C++
C++ ios::app не позволяет работать с seekp() или Update файла без удаления в нем информации при его октрытии
методы seekg и seekp C++
C++ Код не работает в VC++ 6.0 но работает в MSVC++ 2010
C++ перетирание байтов с использованием seekp + write в бинарных файлах
Seekp() Не слушается C++
C++ Различия в использовании seekg и seekp при работе с fstream
C++ Не работает кириллица. Или работает, но illegale bute sequence

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
NoMasters
Псевдослучайный
1740 / 1083 / 70
Регистрация: 13.09.2011
Сообщений: 3,102
06.01.2013, 18:02     Не работает seekp() #2
Цитата Сообщение от ninja2 Посмотреть сообщение
ios::app
Цитата Сообщение от ninja2 Посмотреть сообщение
записывает в конец файла
Удивительно, да? Вы пробовали читать документацию?
ios::app All output operations are performed at the end of the file, appending the content to the current content of the file.
ninja2
 Аватар для ninja2
230 / 186 / 7
Регистрация: 26.09.2012
Сообщений: 2,018
Завершенные тесты: 1
06.01.2013, 18:27  [ТС]     Не работает seekp() #3
Да я не сильно в английском шарю. Я думал что функции seekp может курсор перемещать не зависимо от ios::app.
А как правильно нужно мне записать ?
Я от записал ios::in|ios::out.

Добавлено через 23 минуты
Я вообщето читал за ios::app, io::ate , ios::in . Но я не думал что там как написано так и нужно понимать.
Вот ios::in|ios::out я от никак не опйму как это вырожение означате, в часности что палочка означает?
Палочка это операция или? или что это? Как это выражение нужно понимать приоритет операци? От если файл открылся то значит файл открывается как ios::in, ios::out отбрасывается. Или наоборот если ios::in не может открыть файл тоесть файла не существует то срабатывает ios::out и создает файл новый. А щас я смотрю оно работает сразу вместе одновременно. Тоесть я понимаю через палочку можно допустим записать ios::in|ios::out|ios::app и чо это нам даст? режим для чтения|записи|в конец файла ??? Какаето чепуха получается. Как можно читать конец файла????
Разьясните новичку. А то я сам не разберусь.
booker
 Аватар для booker
23 / 23 / 2
Регистрация: 21.11.2012
Сообщений: 106
06.01.2013, 18:30     Не работает seekp() #4
http://www.cplusplus.com/reference/o...ostream/seekp/

через хром открываешь жмакаешь перевести
Yandex
Объявления
06.01.2013, 18:30     Не работает seekp()
Ответ Создать тему
Опции темы

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