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