C++的文件定位分为读位置和写位置的定位,对应的成员函数分别为seekg()和seekp()。
seekg()函数设置读位置,seekp()设置写位置。函数原型如下:
istream& seekg(streamoff offset,seek_dir origin);
ofstream& seekp(streamoff offset,seek_dir origin);
其中,offset表示偏移量,seek_dir表示移动的基准位置,取值如下:
|
ios::beg
| 文件开头 |
| ios::cur | 文件当前位置 |
| ios::end | 文件结尾 |
示例:
inFile.seekg(2,ios::beg); // 把文件读指针从开始位置向后移动2个字节
outFile.seekp(2,ios::cur); // 把文件写指针从当前位置向后移动2个字节
文件大小可以使用 seekg() 和 tellg() 或者 seekp() 和 tellp()函数结合使用的方式获取文件大小。
示例:
inFile.seekg(0,ios::end); // 读文件指针移动到文件末尾
streampos ipos = inFile.tellg(); //返回当前指针的位置,也就是文件的大小,单位是字节
求出一个文件的字节大小:
#include <iostream>
#include <fstream> //包含头文件
#include <string>
using namespace std;
void test() {
fstream fs;
fs.open("file.txt");
long start, end;
fs.seekg(0,ios::beg);
start = fs.tellg();
fs.seekg(0, ios::end);
end = fs.tellg();
cout << end - start << " bytes" << endl;
fs.close();
}
int main() {
test();
return 0;
}
C++文件定位与大小获取方法
3万+

被折叠的 条评论
为什么被折叠?



