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

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

Войти
Регистрация
Восстановить пароль
 
TempuSFatumA
1 / 1 / 0
Регистрация: 02.04.2013
Сообщений: 90
#1

Криво читается бинарник - C++

08.10.2013, 16:34. Просмотров 220. Ответов 4
Метки нет (Все метки)

Здравия желаю!
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <iostream>
#include <fstream>
using namespace std;
 
void main()
{
    char l=6,c=3,b;
    fstream a("LOL.txt",ios::out|ios::binary|ios::trunc);
    a.write(&l,sizeof(l));
    a.close();
 
    a.open("LOL.txt",ios::out|ios::binary|ios::ate);
    a.write(&c,sizeof(l));
    a.close();
 
    a.open("LOL.txt",ios::binary|ios::in);
    cout<<f.tellg()<<"   "<<a.rdbuf()->in_avail();
    a.read(&b,sizeof(l));
    a.close();
}
Собственно, не могу понять, почему при чтении в b записывается 3, а не 6.
seekg() говорит, что указатель на 0 элементе стоит.
Что еще не понятно: in_avail() также возвращает 0.
То есть и считать он не может ничего, а в b пишется последнее записанное.
Может я не правильно понял работу функций open/close...
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.10.2013, 16:34     Криво читается бинарник
Посмотрите здесь:

Неправильно записывается бинарник - C++
#include &lt;iostream&gt; #include &lt;string&gt; #include &lt;iomanip&gt; #include &lt;fstream&gt; #include &lt;stdlib.h&gt; using namespace std; class...

Как побайтно считать бинарник? - C++
Как побайтно считать бинарник? Именно в переменную тип char.

Запись в бинарник и его чтение - C++
Привет всем, задача состоит в том, что нужно записать в бинарник сведения о сканерах и считать их из него. Проблема в том что нужно в...

GCC 4.7 компилируется, но не запускается бинарник - C++
Где облажался? int main() { int a = {5,}; int b = {7,}; int sum=0; for(int i = 1; i &lt; 200; i++)

Запись структуры с строкой в бинарник - C++
Здравствуйте, уважаемые форумчане! Интересовал вопрос записи структуры, в который есть string, в бинарный файл. Нашел на форуме код и...

Где скачать бинарник haartraining для opencv - C++
Где скачать бинарник haartraining для opencv ?

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Croessmah
Модератор
Эксперт CЭксперт С++
13063 / 7326 / 817
Регистрация: 27.09.2012
Сообщений: 18,085
Записей в блоге: 3
Завершенные тесты: 1
08.10.2013, 16:48     Криво читается бинарник #2
C++
1
a.open("LOL.txt",ios::out|ios::binary|ios::app);
а если второй раз открыть так?
TempuSFatumA
1 / 1 / 0
Регистрация: 02.04.2013
Сообщений: 90
08.10.2013, 16:50  [ТС]     Криво читается бинарник #3
Спасибо, это убрало ошибку с b.

Но in_avail() всё равно вернуло 0... Почему же? Оно же вроде кол-во байт оставшихся возвращает.
Croessmah
Модератор
Эксперт CЭксперт С++
13063 / 7326 / 817
Регистрация: 27.09.2012
Сообщений: 18,085
Записей в блоге: 3
Завершенные тесты: 1
08.10.2013, 17:09     Криво читается бинарник #4
Попробуйте вызвать
C++
1
std::ios::sync_with_stdio(false);
в начале main
хотя...
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
08.10.2013, 17:29     Криво читается бинарник
Еще ссылки по теме:

Прочитать бинарник картинки через std::cin - C++
Здравствуйте дорогие форумчане! У меня возникла такая не тривиальная задача, вот собственно в чем фишка: Нужно написать на С++...

Как компилировать программу C++ или код в бинарник (что бы запускался без участия ОС) - C++
Помогите пожалуйста как компилировать прогу написанную на с++ или код в бинарник (что бы запускался без участия ОС) И сразу второй вопрос...

Не читается символ 'e' - C++
Вторая проверка просто игнорируется: float i; char c; std::cin &gt;&gt; i &gt;&gt; c; if (c == '$') { i /= 30; } else if (c...

Неправильно читается файл - C++
Здравствуйте. Подскажите, пожалуйста. Написал программу, которая создает динамический массив длиной 189кб: BYTE *Massiv; Massiv =...


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

Или воспользуйтесь поиском по форуму:
Croessmah
Модератор
Эксперт CЭксперт С++
13063 / 7326 / 817
Регистрация: 27.09.2012
Сообщений: 18,085
Записей в блоге: 3
Завершенные тесты: 1
08.10.2013, 17:29     Криво читается бинарник #5
http://stackoverflow.com/questions/9...ome-set-eofbit
in_avail() returns the number of chars it can see in the internal buffer, if any. Otherwise it calls showmanyc() to try to detect if chars are known to be available elsewhere, so a buffer fill request is guaranteed to succeed.

In turn, showmanyc() will return the number of chars it knows about, if any, or -1 if it knows that a read will fail, or 0 if it doesn't have a clue.
Криво читается бинарник
Yandex
Объявления
08.10.2013, 17:29     Криво читается бинарник
Ответ Создать тему
Опции темы

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