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

Что делает tellg? - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 13, средняя оценка - 4.85
soican
49 / 23 / 1
Регистрация: 16.11.2011
Сообщений: 329
Записей в блоге: 5
21.11.2013, 12:08     Что делает tellg? #1
имеем вот такой код
C++
1
2
3
4
string str;
ifstream in(FileName );
ifstream::streampos filesize = in.tellg();
str.reserve(filesize);
почему здесь tellg дает конец файла от нуля ?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
21.11.2013, 12:08     Что делает tellg?
Посмотрите здесь:

C++ Что делает оператор >> в C++?
Почему значение tellg() не изменяется? C++
Что делает cin.get C++
C++ Что делает pair?
Что делает код? C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
21.11.2013, 12:17     Что делает tellg? #2
Цитата Сообщение от soican Посмотреть сообщение
почему здесь tellg дает конец файла от нуля ?
Это непонятно о чём. tellg() выдаёт позицию курсора. При обычном открытии файла курсор на позиции 0 (начало файла).
soican
49 / 23 / 1
Регистрация: 16.11.2011
Сообщений: 329
Записей в блоге: 5
21.11.2013, 15:28  [ТС]     Что делает tellg? #3
Цитата Сообщение от alsav22 Посмотреть сообщение
Это непонятно о чём. tellg() выдаёт позицию курсора. При обычном открытии файла курсор на позиции 0 (начало файла)
и все же - правильно все работает http://www.cplusplus.com/reference/s...tring/reserve/
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
#include <fstream>
#include <string>
#include <iostream>
 
int main ()
{
  std::string str;
 
  std::ifstream file ("1.txt",std::ios::in|std::ios::ate);
  if (file) {
 
   std::ifstream::streampos filesize = file.tellg();
 
    str.reserve(filesize);
    file.seekg(0);
 
    std::cout <<str.capacity() << std::endl; // будит весить столько же или бльше, чем 1.txt
 
    while (!file.eof())
    {
      str += file.get();
    }
    std::cout << str;
  }
  return 0;
}
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11828 / 6807 / 769
Регистрация: 27.09.2012
Сообщений: 16,878
Записей в блоге: 2
Завершенные тесты: 1
21.11.2013, 17:06     Что делает tellg? #4
soican, а теперь внимательно посмотрите на код в посте #1 и на код в посте #3 и найдите отличие из-за которого работает.
soican
49 / 23 / 1
Регистрация: 16.11.2011
Сообщений: 329
Записей в блоге: 5
21.11.2013, 19:55  [ТС]     Что делает tellg? #5
Croessmah, [CPP]коварный ios::ate)))
Yandex
Объявления
21.11.2013, 19:55     Что делает tellg?
Ответ Создать тему
Опции темы

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