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

fstream::tellp() не работает как надо. - C++

Восстановить пароль Регистрация
 
Teravisor
30 / 30 / 3
Регистрация: 07.08.2011
Сообщений: 89
28.01.2012, 01:08     fstream::tellp() не работает как надо. #1
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <iostream>
#include <stdlib.h>
#include <fstream>
 
using namespace std;
 
int main(int argc, char** argv)
{
   fstream f("tmp.b",ios::out|ios::binary);
//Записываем.
   f<<"abc";
//По идее смотрим где указатель куда писать.
   printf("%d\n",f.tellp());
   f.close();
}
Выдает в консоль всегда 0.
По идее же должно выдавать в данном примере 3.
Файл записывается успешно.(С проверками - f.good() и точка.)
Дальнейшие эксперименты показали, что tellg() выдает тоже всегда 0, при том, даже после seekg(), однако чтение доказывает, что указатель откуда читать нормально переставился. Чтение проверено с флагами ios::in|ios::out|ios::binary на существующем файле.

Что может быть причиной и есть ли способ исправить/обойти?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.01.2012, 01:08     fstream::tellp() не работает как надо.
Посмотрите здесь:

как работает write в fstream? C++
C++ Цикл не работает так как надо
C++ Вывод из файла работает на так как надо
C++ fstream не работает и чтение и запись
C++ работает fstream в VC++2010
Работает не так как надо(классы) C++
не работает fstream.h C++
При работе fstream указатель типа pos_type (позиции в файле) не работает C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
NoMasters
Псевдослучайный
1737 / 1080 / 69
Регистрация: 13.09.2011
Сообщений: 3,094
28.01.2012, 02:06     fstream::tellp() не работает как надо. #2
tellp() возвращает long, попробуй
C
1
printf("%ld\n",f.tellp());
Если прокатит, заодно скажи на какой архитектуре работаешь. Вообще, это же плюсы, зачем printf()?
Teravisor
30 / 30 / 3
Регистрация: 07.08.2011
Сообщений: 89
28.01.2012, 13:17  [ТС]     fstream::tellp() не работает как надо. #3
Да, спасибо. Система х86, винда 32х битная, думал инт возвращает, ошибся.

З.Ы. Я использую printf всегда когда не понимаю почему не работает - так в данном случае cout меня запутал бы еще больше, т.к. основная задача - не вывести на экран, а понять в чем ошибка.
Yandex
Объявления
28.01.2012, 13:17     fstream::tellp() не работает как надо.
Ответ Создать тему
Опции темы

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