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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 15, средняя оценка - 4.93
Михаэль
0 / 0 / 0
Регистрация: 22.02.2010
Сообщений: 15
#1

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

05.08.2010, 10:38. Просмотров 1859. Ответов 2
Метки нет (Все метки)

Следующий код:

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++ Что делает tellg?
C++ Не изменяется значение элемента класса
C++ Std::istream::tellg нумерация символов
Почему изменяется значение переменной между функциями класса? C++
Не изменяется значение переменной в объекте C++
C++ Функция суммы, не изменяется значение

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
easybudda
Эксперт С++
 Аватар для easybudda
9412 / 5435 / 917
Регистрация: 25.07.2009
Сообщений: 10,428
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
9412 / 5435 / 917
Регистрация: 25.07.2009
Сообщений: 10,428
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() не изменяется?
Ответ Создать тему
Опции темы

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