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

Почему значение tellg() не изменяется? - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 15, средняя оценка - 4.93
Михаэль
0 / 0 / 0
Регистрация: 22.02.2010
Сообщений: 15
05.08.2010, 10:38     Почему значение tellg() не изменяется? #1
Следующий код:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <iostream>
#include <fstream>
 
using namespace std;
 
void main()
{
    ifstream file;
    file.open("words.txt");
 
    while (!file.eof())
        file.get();
 
    cout << file.tellg() << endl;
 
    file.seekg(0, ios::beg);
 
    cout << file.tellg() << endl;
}
Выдает результат:
-1
-1

То есть, значение, возвращаемое функцией tellg() никак не изменяется после применения функции seekg().

Вопросы:
1) почему так?
2) как сделать, чтобы tellg() выдавала значение, устанавливаемое seekg()?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
05.08.2010, 10:38     Почему значение tellg() не изменяется?
Посмотрите здесь:

C++ Изменяется значение щетчика
Значение аргумента х изменяется от а до b с шагом h C++
C++ почему изменяется и первый экземпляр класса
C++ Почему не изменяется строка в массиве?
Написал программку с рекурсией. Не могу понять, почему не изменяется аргумент. C++
Вычислить значение функции a = b ^2 sin (b), причем b изменяется от 0,9 до 1,7 с шагом 0,2. Найти среднее значение разности между элементами C++
C++ Не изменяется значение элемента класса
Почему изменяется значение переменной между функциями класса? C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
easybudda
Модератор
Эксперт С++
 Аватар для easybudda
9371 / 5421 / 914
Регистрация: 25.07.2009
Сообщений: 10,423
05.08.2010, 11:35     Почему значение tellg() не изменяется? #2
Цитата Сообщение от Михаэль Посмотреть сообщение
почему так?
Цитата Сообщение от Михаэль Посмотреть сообщение
file.open("words.txt");
а файл точно открылся?
C++
1
2
3
4
5
6
...
if ( ! file.is_open() ){
  cerr << "Can't open input file!" << endl;
  return 1;
}
...
это во-первых,
а во-вторых seekg флаг eof не снимает, потому оба раза -1 и возвращается.
easybudda
Модератор
Эксперт С++
 Аватар для easybudda
9371 / 5421 / 914
Регистрация: 25.07.2009
Сообщений: 10,423
05.08.2010, 16:02     Почему значение tellg() не изменяется? #3
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <iostream>
#include <fstream>
 
int main(){
    std::ifstream ifs("input.txt", std::ios::binary);
    if ( ! ifs.is_open() ){
        std::cerr << "Can't open input file!" << std::endl;
        return 1;
    }
    std::cout << "Open position: " << ifs.tellg() << std::endl;
    ifs.seekg(0, std::ios::end);
    std::cout << "End position: " << ifs.tellg() << std::endl;
    ifs.seekg(0, std::ios::beg);
    std::cout << "Start position: " << ifs.tellg() << std::endl;
 
    ifs.close();
    return 0;
}
Почему значение tellg() не изменяется?
Yandex
Объявления
05.08.2010, 16:02     Почему значение tellg() не изменяется?
Ответ Создать тему
Опции темы

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