c++ 文件的输入输出流

翻译自:http://www.cplusplus.com/doc/tutorial/files/

c++提供了下列的类用来处理文件的输入输出:

    ofstream:处理文件输出流的类

    ifstream:处理文件输出流的类

    fstream:同时处理文件输入输出的类

这些类直接或间接地衍生自istream或ostream类,我们已经在前面学习过这些类,我们使用了他们的对象cin,cout。我们可以像使用cin,cout一样来操作我们的文件流。不同的是,我们处理的是物理设备上的文件。让我们瞧一下下面的例子。

// basic file operations
#include <iostream>
#include <fstream>
using namespace std;

int main () {
  ofstream myfile;
  myfile.open ("example.txt");
  myfile << "Writing this to a file.\n";
  myfile.close();
  return 0;
}

这个程序创建了一个叫做"example.txt"的文件,并且写入了一串字符。

 

我们一步一步的向下进行:

打开一个文件

    创建一个与文件关联的对象。并使用open函数打开文件。

    open(filename,mode)

     filename在这里不在赘述,重点介绍一下mode:

ios::in 为输入打开
ios::out 为输出打开
ios::binary 以二进制打开
ios::ate 打开文件,并移至文件尾部
ios::app 追加的文件结尾
ios::trunc 如果问价存在,则截断文件

可以逻辑运算符OR(|)合并标志(mode)位,如下:

ofstream myfile;
myfile.open ("example.bin", ios::out | ios::app | ios::binary);

文件处理的三个类中有一个默认的标志位,如下:

class default mode parameter
ofstream ios::out
ifstream ios::in
fstream ios::in | ios::out

我们也可以采用以下的方式进行打开文件,可以完美合并open函数跟构造函数。

ofstream myfile ("example.bin", ios::out | ios::app | ios::binary);

打开完成之后,我们可以使用如下方式测试问价是否打开成功:

if (myfile.is_open()) { /* ok, proceed with output */ }

关闭文件

myfile.close();

文本文件流

    文本文件流是在标志中不含有ios:binary的文件流,它 的大致输入输出如下:

输入:

// writing on a text file
#include <iostream>
#include <fstream>
using namespace std;

int main () {
  ofstream myfile ("example.txt");
  if (myfile.is_open())
  {
    myfile << "This is a line.\n";
    myfile << "This is another line.\n";
    myfile.close();
  }
  else cout << "Unable to open file";
  return 0;
}

输入:

// reading a text file #include <iostream> #include <fstream> #include <string> using namespace std;int main () {
  string line;
  ifstream myfile ("example.txt");
  if (myfile.is_open())
  {
    while ( myfile.good() )  //处于就绪状态
    {
      getline (myfile,line);
      cout << line << endl;
    }
    myfile.close();
  }

  else cout << "Unable to open file"; 

  return 0;
}

测试状态:

除了good()检查状态,还有其他的一些测试函数。

bad()

fail()

eof()

good()

功能不在此处多说了!

获取和设置流指针:

    未完待续

 

 

 

 

 

 

 

 

 

 

 

 

 

你可能感兴趣的:(c++ 文件的输入输出流)