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

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

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

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

05.08.2010, 10:38. Просмотров 1931. Ответов 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()?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
05.08.2010, 10:38
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Почему значение tellg() не изменяется? (C++):

Почему не изменяется значение члена класса - C++
Инструкция по запуску: &lt;имя.exe&gt; &lt;inputfilename&gt; &lt;outputfilename&gt; &lt;-s|-i&gt; &lt;-a|-d&gt; В конструкторе (FileSorter.cpp, line 21) я изменяю...

Почему изменяется значение переменной между функциями класса? - C++
Почему-то изменяется значение переменной m(кол-во специальностей) в output_spec. Пробовал в других средах покомпилить, но m все равно...

Почему не изменяется строка в массиве? - C++
#include &lt;iostream&gt; #include &lt;stdio.h&gt; using namespace std; int main() { const int nstr=4, nstb=4; int mas; int i, j; ...

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

почему изменяется и первый экземпляр класса - C++
Почему значение a.m становится равным b.m? Как сделать так, чтобы массив word можно было использовать несколько раз? #include...

Написал программку с рекурсией. Не могу понять, почему не изменяется аргумент. - C++
Еще раз здравствуйте. Днем будучи в очереди которая затянулась на 2 часа, решил побаловаться с кодом. Написал программку(если ее так можно...

2
easybudda
Модератор
Эксперт CЭксперт С++
9663 / 5613 / 952
Регистрация: 25.07.2009
Сообщений: 10,776
05.08.2010, 11:35 #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 и возвращается.
1
easybudda
Модератор
Эксперт CЭксперт С++
9663 / 5613 / 952
Регистрация: 25.07.2009
Сообщений: 10,776
05.08.2010, 16:02 #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() не изменяется?
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
05.08.2010, 16:02
Привет! Вот еще темы с ответами:

Изменяется значение щетчика - C++
програма читает с файлов числа, и выводит на екран. Не могу понять, почему щетчики i,j после исполнения цыкла увеличиваются на 1? Пишу в VS...

Не изменяется значение элемента класса - C++
Часть программы: class Saving { public: ... void set(double); double calculate(); double get() const;

Не изменяется значение переменной в объекте - C++
Переменная health меняет своё значение только внутри функции punch(), при этом её значение в объектах a и b остаётся неизменным. Как...

Значение аргумента х изменяется от а до b с шагом h - C++
Здравствуйте уважаемые любители и ценители языка С++! У меня к вам огромная просьба. На днях нужно сдать контрольную работу по предмету...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

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