C++指定位置读写文件(附带实例)
有时不需要对整个文件进行读写,只需对指定位置的某段数据进行读写,这时就需要通过移动文件指针来实现。
要实现在指定位置读写文件的功能,首先要了解文件指针是如何移动的。下面来认识下设置文件指针位置的 4 个函数:
位移字节数是移动指针的位移量,相对位置是参照位置,可取值如下:
例如,seekg(0,ios::beg) 可将文件指针移动到相对于文件头 0 个偏移量的位置,即指针在文件头。
【实例】创建一个 test.txt 文件,内容为 https://c.biancheng.net/c/。编写程序,用户输入某个指定位置,输出对应的字符。具体代码如下:
要实现在指定位置读写文件的功能,首先要了解文件指针是如何移动的。下面来认识下设置文件指针位置的 4 个函数:
- seekg():参数有两个,分别是位移字节数和相对位置,用于输入文件中指针的移动;
- seekp():参数有两个,分别是位移字节数和相对位置,用于输出文件中指针的移动;
- tellg():用于查找输入文件中的文件指针位置;
- tellp():用于查找输出文件中的文件指针位置。
位移字节数是移动指针的位移量,相对位置是参照位置,可取值如下:
- ios::beg:文件头部;
- ios::end:文件尾部;
- ios::cur:文件指针的当前位置。
例如,seekg(0,ios::beg) 可将文件指针移动到相对于文件头 0 个偏移量的位置,即指针在文件头。
【实例】创建一个 test.txt 文件,内容为 https://c.biancheng.net/c/。编写程序,用户输入某个指定位置,输出对应的字符。具体代码如下:
#include <iostream>
#include <fstream>
using namespace std;
int main()
{
ifstream ifile;
ifile.open("test.txt");
if(!ifile)
{
cout << "can not open" << endl;
return 0;
}
ifile.seekg(0,ios::end);
int maxpos=ifile.tellg();
int pos;
cout << "Position:";
cin >> pos;
if(pos > maxpos)
{
cout << "is over file length" << endl;
}
else
{
char ch;
ifile.seekg(pos);
ifile.get(ch);
cout << ch <<endl;
}
ifile.close();
return 0;
}
程序运行结果为:
Position:9
c
ICP备案:
公安联网备案: