Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 5.00/11: Рейтинг темы: голосов - 11, средняя оценка - 5.00
290 / 193 / 23
Регистрация: 03.08.2011
Сообщений: 2,824
Записей в блоге: 12

Глюк с teelg

01.07.2013, 15:56. Показов 2828. Ответов 29
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
C++
1
2
3
int x1 = ifile.tellg();
ifile >>s; 
x1 = ifile.tellg();
сначала х1 = 1, потом идёт считывание символа f и далее х1 становится равным -14, как это понимать?

Добавлено через 16 минут
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <fstream>
#include <string>
using namespace std;
 
 
int main()
{
    fstream ifile;
    string s;
    ifile.open("c:\\box2.obj", ios::in);
    int x1 = ifile.tellg();
    getline(ifile,s);
    x1 = ifile.tellg();
    ifile.close();
    return 0;
}
вот ещё пример считываемая строка весит больше 20 байт, но х1 выводит что смещение равно 9 как это понимать?

Добавлено через 2 минуты
я так понял это какой то баг?
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
01.07.2013, 15:56
Ответы с готовыми решениями:

Интересный глюк. Или не глюк? Смена дефолтного пути
Вкратце объясняю: Есть приложение, которое подключается к БД Access. Путь к файлу БД в строке подключения прописываю просто как имя...

Глюк или не глюк в Siglent SDS 1192CML..?
Всем привет! У меня тоже имеется Siglent SDS 1192CML, пора создавать клуб любителей ентого девайса :) При замерах одного и того же...

Глюк печатания и глюк порчи константы
Дамы и господа! Я столкнулся с двумя глюками, которые не нашёл в списке распространённых ошибок. 1) При попытке распечатать массив...

29
:)
Эксперт С++
4773 / 3267 / 497
Регистрация: 19.02.2013
Сообщений: 9,046
02.07.2013, 23:03
Студворк — интернет-сервис помощи студентам
alsav22, что проблема в концовке строк. Если строки соответствуют правилам ОС, в котором читается файл, то ios::binary не нужен.
0
5500 / 4895 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
02.07.2013, 23:12
Цитата Сообщение от Tulosba Посмотреть сообщение
что проблема в концовке строк. Если строки соответствуют правилам ОС, в котором читается файл, то ios::binary не нужен.
Может и не нужен, но чем мешает? Есть конкретный файл, и для этого файла, для корректной рабоы tellg(), нужен ios::binary. Я, для себя, когда-то сделал вывод, что если делаются какие-либо операции с курсором, то файл должен быть открыт в бинарном режиме, иначе могут быть глюки.
1
5500 / 4895 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
02.07.2013, 23:33
У ТС с курсорами непонятки какие-то. В предыдущей теме я не понял: почему у него курсор так прыгал, и здесь тоже непонятно. Проверил его код с файлом. Если в текстовом режиме, то tellg() на две позиции больше показывает, чем размер считанной строки ('\n' обрабатывает как два символа), если в бинарном режиме, то больше на одну позицию ('\n' - как один символ). Всё как и должно быть. А у ТС строка 20 байт, а смещение 9. Чудеса!
Миниатюры
Глюк с teelg   Глюк с teelg  
0
290 / 193 / 23
Регистрация: 03.08.2011
Сообщений: 2,824
Записей в блоге: 12
03.07.2013, 12:55  [ТС]
Цитата Сообщение от alsav22 Посмотреть сообщение
Что сказать хотите?
что telg не работает, когда мы открываем файл obj без ios::binary

Добавлено через 10 минут
alsav22,
когда вы писали код в прошлой теме , то у вас работало всё правильно, но стоило убрать ios::binary как результат стал отличаться от желаемого. В моём же коде где я говорил про
Цитата Сообщение от alsav22 Посмотреть сообщение
А у ТС строка 20 байт, а смещение 9. Чудеса!
у меня файл открывался без ios::binary
0
5500 / 4895 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
03.07.2013, 17:11
Цитата Сообщение от Van111 Посмотреть сообщение
что telg не работает, когда мы открываем файл obj без ios::binary
Это не вам вопрос был.
Цитата Сообщение от Van111 Посмотреть сообщение
у меня файл открывался без ios::binary
Я понимаю, что без, но у меня, если без (смотрите первый скрин) разница, по отношению к длине строки, на 2, как и должно быть. У вас же строка 20, а смещение 9, т.е. разница в 11. Вот это не понятно, а не то что tellg() по другому работает. У меня тоже по другому, но не настолько же по другому!
0
290 / 193 / 23
Регистрация: 03.08.2011
Сообщений: 2,824
Записей в блоге: 12
03.07.2013, 21:09  [ТС]
Цитата Сообщение от alsav22 Посмотреть сообщение
У вас же строка 20, а смещение 9, т.е. разница в 11
на самом деле там не 20, а 23 (это примерно сказал), что самое интересное после первого считывания из файла (обычно это 5- 6 символов) смещение становилось - 14
0
5500 / 4895 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
03.07.2013, 21:31
Цитата Сообщение от Van111 Посмотреть сообщение
на самом деле там не 20, а 23 (это примерно сказал), что самое интересное после первого считывания из файла (обычно это 5- 6 символов) смещение становилось - 14
У меня на скрине тоже первое считывание из файла. У нас с вами разные файлы? Или у вас первое считывание не с начала файла? Код покажите, как вы первое считывание делаете, когда такое (не в бинарном режиме) происходит.
0
290 / 193 / 23
Регистрация: 03.08.2011
Сообщений: 2,824
Записей в блоге: 12
03.07.2013, 21:50  [ТС]
Цитата Сообщение от alsav22 Посмотреть сообщение
Код покажите, как вы первое считывание делаете, когда такое (не в бинарном режиме) происходит.
к сожалению (к счастью)код переписан, но вот интересная штука взгляните сначала с слип, а потом без него
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
30
31
32
33
34
35
36
37
38
39
40
41
#include <iostream>
#include <fstream>
#include <string>
#include <Windows.h>
using namespace std;
 
 
int main()
{ 
    char NameFile[] = "c:\\calla_lily_with_roses.obj";
    int x = 0 , sum = 0;
 
    fstream ifile;
    
    ifile.open(NameFile, ios::in);
 
    string temp;
         
        int n = 0;
        while (getline(ifile, temp))
        {
            sum += temp.length() + 2 ; //  \r\n
            cout << sum <<" - " << ifile.tellg() <<endl;
            if (temp[0] == 'f')
            {
                cout << temp << endl;
                char ch = ifile.get();
                cout << ch << endl;
                ifile.seekg(-1, ios::cur);
                getline(ifile, temp);
                cout << temp << endl;
                break;
            }
        
        }
        ifile.close();
    
    
    system("pause");
    return 0;
}
файл не переведённый в формат doc!
0
5500 / 4895 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
03.07.2013, 21:53
Цитата Сообщение от Van111 Посмотреть сообщение
взгляните сначала с слип
Слип - это что?
0
290 / 193 / 23
Регистрация: 03.08.2011
Сообщений: 2,824
Записей в блоге: 12
04.07.2013, 15:32  [ТС]
Цитата Сообщение от alsav22 Посмотреть сообщение
Слип - это что?
мм, я имел в виду Sleep() . То есть посмотрите вывод в начале - число одинаковые , и посмотрите в конце - разница в ~ 1500 байт
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
04.07.2013, 15:32

Глюк с ВЧ
Что такое? У меня по одному ВЧ ( почти миллионнику) сайт в гугле ру выходит на 4м месте.И это длится 2- 3 часа в сутки. Остальное время...

Глюк...
... или Яша заговорил по китайски? :)

Глюк?
http://www.yandex.ru/yandsearch?text=%D1%8...%BB%D0%BE%D0%BD http://www.yandex.ru/yandsearch?text=%D1%8...%BE%D0%BD%D0%B0 ...

глюк Я.К
сабж http://search.yaca.yandex.ru/yca/cy/ch/www.mobile-travel.ru/

Шо глюк?
Сразу говорю домен палить не могу но вот что заметил: http://www.yandex.ru/yandsearch?surl=site.ru&amp;numdoc=50&amp;rd=0 выдача:...


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

Или воспользуйтесь поиском по форуму:
30
Ответ Создать тему
Новые блоги и статьи
Генератор паролей (вариант №1)
Maks 29.10.2026
Реализация из решения ниже выполнена исключительно по моей инициативе. Самым главным критерием для меня было создание паролей, в котором отсутствуют знаки: | 1 l I Обработка содержит следующие. . .
Установка ChatGPT (Codex) на Windows без использования Microsoft Store
Fabien159 28.10.2026
Здравствуйте всем читающим! Опишу процесс установки ChatGPT (Codex) на Windows, если по каким-то причинам у вас не получается устанавить его через Microsoft Store. И так: 1. Скачиваем с. . .
Программное добавление префикса в нумерацию документов
Maks 27.10.2026
Реализация из решения ниже выполнена в самописной конфигурации на БСП (помощь начинающему коллеге). Задача: Программно добавить префикс в нумерацию документов. Решение: В модуле объекта. . .
После закрытия оутлука продолжает висеть процесс в диспетчере задач
Maks 27.10.2026
С недавнего времени в продакшене возникла проблема: при закрытии оутлука в диспетчере задач продолжал висеть процесс outlook. exe. Проблема возникла после установки MS Office 2021 LTSC на машинах, под. . .
Baragoz - DPS/HPS бот для WoW 3.3.5a, многоязычный
AmbA 26.10.2026
Хотите ещё ботов? У меня есть один! А я пока отдохну от него. https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=12062&stc=1&d=1793007952 Инструкция внутри. https:/ / youtu. be/ VpfFZSUDGnQ. . .
Особенности gif сгенерированных в Си
russiannick 21.10.2026
Рассмотрим генерацию gif файлов, которые в Си имеют свои особенности. Gif представляет собой графический формат популярный в интернете. Посмотрим на палитру. Gif файл сгенерированный в си отличается. . .
FPS контроллер с анимированными Y-Bot и 3D-звуком miniaudio (Box3D, Recast, BehaviorTree.CPP, ozz-animation, ImGui, OpenGL и SDL3)
8Observer8 18.10.2026
Содержание блога | English Version Полное мультиплатформенное руководство по стартовому проекту с FPS-контроллером игрока, анимированными роботами Y-Bot с 4-слойным блендингом, 3D-физикой Box3D,. . .
Локальный http сервер
Argus19 17.10.2026
Локальный http сервер На работе, на двух локальных компьютерах круглосуточно работают программы опроса приборов с записью в книги Excel,которые раз в сутки записываются на сервер компании. Т. к. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru