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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 13, средняя оценка - 4.85
soican
49 / 23 / 1
Регистрация: 16.11.2011
Сообщений: 329
Записей в блоге: 5
#1

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

21.11.2013, 12:08. Просмотров 2773. Ответов 4
Метки нет (Все метки)

имеем вот такой код
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++):

Что в программе делает так, что процессор грузится на 100%? - C++
Я не очень разбираюсь в С++, поэтому прошу вашей подсказки по поводу нагрузки на процессор. Вот код программы, на компьютере жрет всю...

Почему значение tellg() не изменяется? - C++
Следующий код: #include <iostream> #include <fstream> using namespace std; void main() { ifstream file;

Что это за знак >> прочитал что это сдвиг вправо? что он делает - C++
int d=6, c=5,f; f = d >> c; cout<< f; вывод 0

Std::istream::tellg нумерация символов - C++
Гарантируется ли стандартом что std::istream::tellg нумерует символы в потоке с нуля, а не, скажем, с единицы?

Тип возвращаемого значения ifstream::tellg() - C++
tellg якобы возвращает std::streampos, а если перейти к определению typedef typename _Traits::pos_type pos_type; pos_type...

Что это за метод?И что он делает? - C++
double func (double y, int k, int n){ double y1; for (int i=0; i<=n+1;i++) y1=0; double t; t=0; y1=1; ...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
alsav22
5417 / 4813 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
21.11.2013, 12:17 #2
Цитата Сообщение от soican Посмотреть сообщение
почему здесь tellg дает конец файла от нуля ?
Это непонятно о чём. tellg() выдаёт позицию курсора. При обычном открытии файла курсор на позиции 0 (начало файла).
soican
49 / 23 / 1
Регистрация: 16.11.2011
Сообщений: 329
Записей в блоге: 5
21.11.2013, 15:28  [ТС] #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
Модератор
Эксперт CЭксперт С++
13133 / 7396 / 828
Регистрация: 27.09.2012
Сообщений: 18,227
Записей в блоге: 3
Завершенные тесты: 1
21.11.2013, 17:06 #4
soican, а теперь внимательно посмотрите на код в посте #1 и на код в посте #3 и найдите отличие из-за которого работает.
soican
49 / 23 / 1
Регистрация: 16.11.2011
Сообщений: 329
Записей в блоге: 5
21.11.2013, 19:55  [ТС] #5
Croessmah, [CPP]коварный ios::ate)))
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
21.11.2013, 19:55
Привет! Вот еще темы с ответами:

Объясните что именно делает "x%d, y%d: " или что это в даном коде - C++
#include &lt;iostream&gt; #include &lt;cmath&gt; using namespace std; double rast(double x1, double y1, double x2, double y2) // Функція яка...

Что делает строка? - C++
Что делает 14 строка? P.S. Программа читает пары с файла и выводит их на экран. # include &lt;iostream&gt; # include &lt;string&gt; # include...

что делает оператор? - C++
Добрый день. Подскажите пожалуйст, что делает следующий оператор: *b=(char *) malloc(1000000);

Что делает fseek? - C++
Что делает fseek и зачем он нужен? fseek(firstFile,0,SEEK_SET); fseek(secondFile,0,SEEK_SET);


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
21.11.2013, 19:55
Ответ Создать тему
Опции темы

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