下面的 C++ 程序以读写模式打开一个文件。在向文件 afile.dat 写入用户输入的信息以后,程序从文件读取信息,并将其输出到屏幕上:ios
#include <fstream> #include <iostream> using namespace std; int main () { char data[100]; // 以写模式打开文件 ofstream outfile; outfile.open("afile.dat"); cout << "Writing to the file" << endl; cout << "Enter your name: "; cin.getline(data, 100); // 向文件写入用户输入的数据 outfile << data << endl; cout << "Enter your age: "; cin >> data; cin.ignore(); // 再次向文件写入用户输入的数据 outfile << data << endl; // 关闭打开的文件 outfile.close(); // 以读模式打开文件 ifstream infile; infile.open("afile.dat"); cout << "Reading from the file" << endl; infile >> data; // 在屏幕上写入数据 cout << data << endl; // 再次从文件读取数据,并显示它 infile >> data; cout << data << endl; // 关闭打开的文件 infile.close(); return 0; }
当上面的代码被编译和执行时,它会产生下列输入和输出:函数
$./a.out Writing to the file Enter your name: Zara Enter your age: 9 Reading from the file Zara 9
上面的实例中使用了 cin 对象的附加函数,好比 getline()函数从外部读取一行,ignore() 函数会忽略掉以前读语句留下的多余字符。spa
istream 和 ostream 都提供了用于从新定位文件位置指针的成员函数。这些成员函数包括关于 istream 的 seekg("seek get")和关于 ostream 的 seekp("seek put")。指针
seekg 和 seekp 的参数一般是一个长整型。第二个参数能够用于指定查找方向。查找方向能够是 ios::beg(默认的,从流的开头开始定位),也能够是 ios::cur(从流的当前位置开始定位),也能够是 ios::end(从流的末尾开始定位)。code
文件位置指针是一个整数值,指定了从文件的起始位置到指针所在位置的字节数。下面是关于定位 "get" 文件位置指针的实例:对象
// 定位到 fileObject 的第 n 个字节(假设是 ios::beg) fileObject.seekg( n ); // 把文件的读指针从 fileObject 当前位置向后移 n 个字节 fileObject.seekg( n, ios::cur ); // 把文件的读指针从 fileObject 末尾往回移 n 个字节 fileObject.seekg( n, ios::end ); // 定位到 fileObject 的末尾 fileObject.seekg( 0, ios::end );