- 文件I/O
- ifstream & ofstream
- in和out是我们声明的两个文件指针,他们的类都是file*,分别作为I/O流的对象使用。
- if(argc!=3)是为了确保程序参数个数的正确性。
- 通过fopen()函数我们以二进制的形式,按可读可写的方式打开两个文件并返回两个文件指针给in 和out。
- 为确保文件正确打开,我们还对fopen()的返回值进行检查,如果未打开成功,就向标准错误流stderr发送一条信息。
- get()函数一次从输入流(stdin)读取一个字符,put()函数把这个字符写入到输入流(stdout).
- 当getc()遇到文件结束标志的时候,函数就返回EOF。EOF是一个宏,在stdio.h中定义,其值为一个负整数,通常为-1.
- EOF实际上有两个含义:MSDN
- 注意细节,getc()的返回值是int类型,所以我们声明时应该是int ch,而不是char ch.
#include#include using namespace std; int main() { ifstream in; in.open("text01.txt"); if (!in) { cout << "打开文件失败" << endl; return 0; } char x; while (in >> x) { cout << x; } cout << endl; in.close(); return 0; }
ifstream in(char *filename,int open_mode) iso::in——打开一个可读文件 ios::out——打开一个可写文文件 ios::binary——以二进制的形式一个打开文件。 ios::app——写入的所有数据将被追加到文件的末尾 ios::trunk——删除文件又有已存在的内容 ios::nocreate——如果要打开的文件不存在,那么以此参数调用open函数将无法进行 ios::noreplece——如果要打开的文件已存在,试图用open函数打开时将返回一个错误
#include#include using namespace std; int main() { ofstream out("text01.txt", ios::app); if (!out) { cerr << "文件打开失败!" << endl; return 0; } for (int i = 10; i > 0; i--) { out << i; } cout << endl; out.close(); return 0; }
#include#include using namespace std; int main() { ofstream fp("text01.txt", ios::in |ios::out); if (!fp) { cerr << "文件打开失败!" << endl; return 0; } fp << "l love"; static char str[20]; fp.seekp(ios::beg); fp << str; cout << str << endl; fp.close(); return 0; }



