size_t size = fs.tellp();
来取文件的大小。。。
但有时候。。这个size的值特别大。。
是为什么啊?
tellp()返回了一个pos_type,不能直接转成size_t么?
6 个解决方案
#1
感觉你的做法有点不对,我是这么做的,肯定能取到值,而且是对的。
fs.seekg(0, std::ios::end);
std::ios::pos_type ss = fs.tellg();
int nFilesize = (int)ss;
#2
楼上这种间接转和我直接转成size_t,有什么区别么?
貌似一样啊。。
我现在就是很多情况下看是正常的。。。但有时得到一个特别大的值。
搞不清原因啊。。。
貌似一样啊。。
我现在就是很多情况下看是正常的。。。但有时得到一个特别大的值。
搞不清原因啊。。。
#3
tellg() 和 tellp() 代表当前get 流指针的位置 (用tellg) 或 put 流指针的位置(用tellp).
long l,m;
l = f.tellp();
f.seekg(0,ios::end);
m = f.tellp();
这样明白吗
long l,m;
l = f.tellp();
f.seekg(0,ios::end);
m = f.tellp();
这样明白吗
#4
因为你指针的位置貌似不对吧……所以要先做一个指针位置的设置
#5
我调试了一下。。。发现是tellp返回了-1,
然后我强制转换成了无符号的size_t,导致很大了。。
现在是不知道为啥会返回-1了。。。
然后我强制转换成了无符号的size_t,导致很大了。。
现在是不知道为啥会返回-1了。。。
#6
http://www.cplusplus.com/reference/ostream/ostream/tellp/
http://baike.baidu.com/view/4209782.htm
http://baike.baidu.com/view/4209782.htm
#1
感觉你的做法有点不对,我是这么做的,肯定能取到值,而且是对的。
fs.seekg(0, std::ios::end);
std::ios::pos_type ss = fs.tellg();
int nFilesize = (int)ss;
#2
楼上这种间接转和我直接转成size_t,有什么区别么?
貌似一样啊。。
我现在就是很多情况下看是正常的。。。但有时得到一个特别大的值。
搞不清原因啊。。。
貌似一样啊。。
我现在就是很多情况下看是正常的。。。但有时得到一个特别大的值。
搞不清原因啊。。。
#3
tellg() 和 tellp() 代表当前get 流指针的位置 (用tellg) 或 put 流指针的位置(用tellp).
long l,m;
l = f.tellp();
f.seekg(0,ios::end);
m = f.tellp();
这样明白吗
long l,m;
l = f.tellp();
f.seekg(0,ios::end);
m = f.tellp();
这样明白吗
#4
因为你指针的位置貌似不对吧……所以要先做一个指针位置的设置
#5
我调试了一下。。。发现是tellp返回了-1,
然后我强制转换成了无符号的size_t,导致很大了。。
现在是不知道为啥会返回-1了。。。
然后我强制转换成了无符号的size_t,导致很大了。。
现在是不知道为啥会返回-1了。。。
#6
http://www.cplusplus.com/reference/ostream/ostream/tellp/
http://baike.baidu.com/view/4209782.htm
http://baike.baidu.com/view/4209782.htm