设置该输入流的位置(只能ifstream和fstream定义的文件类型使用)
seekg(参数一,参数二);
参数一:偏移量
参数二:相对位置
beg 相对于开始位置
cur 相对于当前位置
end 相对于结束位置
例:
1.beg:定位到文件中的第10个字节处
inFile.seekg(10, inFile.beg);
2.cur:定位到从文件的当前位置后10个字节处
inFile.seekg(10, inFile.cur);
3.end:定位到文件的倒数第10个字节处
inFile.seekg(-10, inFile.end);
代码实例:
打印文件的倒数第100个字符
#include
#include
#include
#include
// 打印文件的倒数第100个字符
using namespace std;
int main(void) {
ifstream inFile; // 定义输入流的文件
string line;
inFile.open("seekg.cpp"); // 打开文件
if (!inFile.is_open()) { // 判断文件是否打开失败
cout << "文件打开失败!" << endl;
system("pause");
return -1;
}
// 将文件定位到倒数第100个字符
inFile.seekg(-100, inFile.end);
while (!inFile.eof()) {
getline(inFile, line); // 获取文件的一行数据
cout << line << endl;
}
inFile.close(); // 关闭文件
system("pause");
return 0;
}
=
=
=
设置该输出流的位置(只能ofstream和fstream定义的文件类型使用)
用法和seekg一模一样
seekp(参数一,参数二);
参数一:偏移量
参数二:相对位置
beg 相对于开始位置
cur 相对于当前位置
end 相对于结束位置
例:
1.beg:定位到文件中的第10个字节处
outFile.seekg(10, inFile.beg);
2.cur:定位到从文件的当前位置后10个字节处
outFile.seekg(10, inFile.cur);
3.end:定位到文件的倒数第10个字节处
outFile.seekg(-10, inFile.end);
代码实例:
把“I LOVE C++!”写入文件中,再从它第7个字节处继续写入“JAVA”
#include
#include
#include
// 把“I LOVE C++!”写入文件中,再定位到第7个字节处写入“JAVA"
using namespace std;
int main(void) {
ofstream outFile;
outFile.open("text.txt");
if (!outFile.is_open()) {
cout << "文件打开失败!" << endl;
system("pause");
return -1;
}
outFile << "I LOVE C++"; // 把字符串写入文件中
outFile.seekp(7, outFile.beg); // 把位置定位到文件的第五个字节处
outFile << "JAVA";
outFile.close();
system("pause");
return 0;
}
=
=
=
返回该输入流的当前位置(距离文件的起始位置的偏移量)
只能ifstream和fstream定义的文件类型使用
例:
int line = inFile.tellg();
代码实例:
#include
#include
#include
#include
// 定义一个函数,用来结算一个文件的长度并返回
using namespace std;
// 输入流获取文件的长度
int getSize(const char *FILE) {
ifstream inFile;
inFile.open(FILE);
if (!inFile.is_open()) {
cout << "文件打开失败!" << endl;
system("pause");
return -1;
}
// 将文件定位到最后一个字符
inFile.seekg(0, inFile.end);
// 获取该文件的大小
int ret = inFile.tellg();
inFile.close();
return ret;
}
int main(void) {
// 读文件的长度
cout << getSize("tellg.cpp") << endl;
system("pause");
return 0;
}
=
=
=
返回该输出流的当前位置(距离文件的起始位置的偏移量)
只能ofstream和fstream定义的文件类型使用
例:
int line = outFile.tellg();
代码实例:
#include
#include
#include
// 定义一个函数,用来结算一个文件的长度并返回
using namespace std;
// 输出流获取文件的长度
int setSize(const char *FILE) {
ofstream outFile;
outFile.open(FILE);
if (!outFile.is_open()) {
cout << "文件打开失败!" << endl;
system("pause");
return -1;
}
outFile << "我中意你!";
int ret = outFile.tellp(); // 计算文件长度
outFile.close();
return ret;
}
int main(void) {
// 写文件的长度
cout << setSize("text.txt") << endl;
system("pause");
return 0;
}
运行截图: