Как при помощи fsream получить размер файла более 4гб?
От: Аноним  
Дата: 19.01.08 13:02
Оценка:
сабж
Re: Как при помощи fsream получить размер файла более 4гб?
От: Yagg Россия  
Дата: 20.01.08 15:17
Оценка:
Здравствуйте, Аноним, Вы писали:

А>сабж

В чём проблема?

test.cpp:
#include <fstream>
#include <limits>

using namespace std;

int main()
{
  unsigned long long pos = numeric_limits<unsigned long>::max();
  pos+=1000000000;
  ofstream f("test.bin");
  f.seekp(pos);
  f<<"test"; 
  return 0;
}

После "g++ test.cpp" получается файл в 5 гигов. Подозреваю, что в MSVC также, с точностью до long long(__int64).
Re[2]: Как при помощи fsream получить размер файла более 4гб
От: Sergey Chadov Россия  
Дата: 20.01.08 17:15
Оценка:
Здравствуйте, Yagg, Вы писали:

Y>После "g++ test.cpp" получается файл в 5 гигов. Подозреваю, что в MSVC также, с точностью до long long(__int64).


MSVC8 прекрасно понимает long long.
--
Sergey Chadov

... << RSDN@Home 1.2.0 alpha rev. 685>>
Re[2]: Как при помощи fsream получить размер файла более 4гб
От: . Великобритания  
Дата: 20.01.08 18:27
Оценка:
Yagg wrote:

> После "g++ test.cpp" получается файл в 5 гигов. Подозреваю, что в MSVC

> также, с точностью до long long(__int64).
Эээ.. а может pos_type использовать? Т.е. именно то, что seekp ожидает.
Posted via RSDN NNTP Server 2.1 beta
но это не зря, хотя, может быть, невзначай
гÅрмония мира не знает границ — сейчас мы будем пить чай
Re[3]: Как при помощи fsream получить размер файла более 4гб
От: Yagg Россия  
Дата: 21.01.08 13:45
Оценка:
Здравствуйте, ., Вы писали:

>> также, с точностью до long long(__int64).

>Эээ.. а может pos_type использовать? Т.е. именно то, что seekp ожидает.
Не просто можно, но нужно. Я использовал long long просто для демонстрации того, что используются 64-битные целые.

С другой стороны pos_type — это класс fpos<>, который может неявно конвертиться к streamoff, который дефайном определяется как long long или просто long... в доме который построил Степанов... Короче можно и просто long long. %)
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.